所以说我有一个看起来像这样的数组:
links = [['May 1', 'Link A', 'www.linka.com'], ['May 2', 'Link B', 'www.linkb.com']]
我想与Nokogiri做的是转到每个链接并返回每页上的特定文本(每个x路径)。
我知道我可以这样做:
links.each do |x|
doc = Nokogiri::HTML(open(x[2]))
end
然后遍历该doc
循环中的每个each
。但是,鉴于我的数组中可能有700个项目...这似乎效率很低。有各种嵌套循环等。
有没有更有效的方法来解决这个问题?
感谢。
答案 0 :(得分:1)
您可能希望查看类似 Typhoeus 或 EM-HTTP-Request 的内容来并行化您的HTTP请求。
使用Nokogiri处理页面本身将是一个CPU绑定的任务,因此多线程该任务不会给你太多(或任何)加速。
您最大的减速将来自HTTP请求,因此并行执行将提供最大的加速。
<强>百头巨怪强>:
https://github.com/typhoeus/typhoeus
<强> EM-HTTP请求强>:
https://github.com/igrigorik/em-http-request