我需要抓取(使用 scrAPI)400 多个网页 ruby,我的实际代码是非常连续的:
data = urls.map {|url| scraper.scrape url }
实际上代码有点不同(异常处理和东西)。
我怎样才能让它更快?如何并行下载?
我需要抓取(使用 scrAPI)400 多个网页 ruby,我的实际代码是非常连续的:
data = urls.map {|url| scraper.scrape url }
实际上代码有点不同(异常处理和东西)。
我怎样才能让它更快?如何并行下载?
th = []
data = []
dlock = Mutex.new
urls.each do |url|
th << Thread.new(url) do |url|
d = scraper.scrape url
dlock.synchronize { data << d }
end
end
th.each { |t| t.join }
多田!(注意;凭记忆写,未经测试,可能会吃掉你的小猫等)
编辑:我想一定有人写了这个的通用版本,所以他们有:http ://peach.rubyforge.org/——享受吧!
这几乎是 Pickaxe 线程解释中使用的一个示例:
http://www.rubycentral.com/pickaxe/tut_threads.html
您应该能够轻松地调整 Pickaxe 代码以使用您的刮板。