3

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

links = [['May 1', 'Link A', 'www.linka.com'], ['May 2', 'Link B', 'www.linkb.com']]

我想对 Nokogiri 做的是转到每个链接并在每个页面上返回特定文本(根据我拥有的 xpath)。

我知道我可以做类似的事情:

links.each do |x|
   doc = Nokogiri::HTML(open(x[2]))
end

doc然后在该each循​​环中遍历每个。但是,鉴于我的数组中可能有 700 个项目......这似乎效率很低。使用各种嵌套循环等。

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

谢谢。

4

1 回答 1

1

您可能想查看TyphoeusEM-HTTP-Request 之类的东西来并行化您的 HTTP 请求。

使用 Nokogiri 处理页面本身将是一项受 CPU 限制的任务,因此多线程该任务不会给您带来太多(或任何)加速。

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

台风
https ://github.com/typhoeus/typhoeus

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

于 2012-06-03T10:53:02.887 回答