我有一系列链接,并且想解析每个链接,用Nokogiri检查每个链接的最有效方法是什么? - Ruby

时间:2012-06-03 06:34:04

标签: ruby-on-rails ruby ruby-on-rails-3 nokogiri

所以说我有一个看起来像这样的数组:

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个项目...这似乎效率很低。有各种嵌套循环等。

有没有更有效的方法来解决这个问题?

感谢。

1 个答案:

答案 0 :(得分:1)

您可能希望查看类似 Typhoeus EM-HTTP-Request 的内容来并行化您的HTTP请求。

使用Nokogiri处理页面本身将是一个CPU绑定的任务,因此多线程该任务不会给你太多(或任何)加速。

您最大的减速将来自HTTP请求,因此并行执行将提供最大的加速。

<强>百头巨怪
https://github.com/typhoeus/typhoeus

<强> EM-HTTP请求
https://github.com/igrigorik/em-http-request