下面是编程之家 jb51.cc 通过网络收集整理的代码片段。
编程之家小编现在分享给大家,也给大家做个参考。
#coding utf-8 #!/usr/bin/env ruby -w require "open-uri" require "nokogiri" require "thread" require 'erlectricity' class Spider def initialize(dir,url) @url = url @dir = dir end def create_dir `rm -rf #{@dir}` if File.directory? @dir Dir.mkdir @dir end def get_imgs(doc) links = doc.css('img.BDE_Image').collect { |img| img['src'] } end def run(pn,f) create_dir() threads = [] (1..pn).each do |i| threads << Thread.new do puts "going to #@url in page #{i}" doc = Nokogiri::HTML(open("#@url?pn=#{i}")) links = get_imgs(doc) f.send!([:links,links]) end end threads.each &:join end end receive do |f| _pn = 1 f.when([:pn,Fixnum]) do |pn| _pn = pn f.send!([:pn,_pn]) f.receive_loop end f.when([:url,String]) do |url| if url =~ /.*\/p\/(\d+)\/?/ spider = Spider.new($1,url) spider.run(_pn,f) f.send!(:exit) else f.send!([:error,"error."]) f.receive_loop end end end
以上是编程之家(jb51.cc)为你收集整理的全部代码内容,希望文章能够帮你解决所遇到的程序开发问题。
如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。