1

我有以下代码行,用于抓取网站的 html。如您所见,我将代理传递给此

doc = Nokogiri::HTML(open(Scrape.scrape_url + page.to_s, :proxy => 'http://177.19.134.66:8080'))

有时这些代理会关闭,然后我会收到错误消息

连接尝试失败,因为连接方在一段时间后没有正确响应,或者连接失败,因为连接的主机没有响应。- 连接(2)

我对 ruby​​ 很陌生,但我想做的是创建一个代理 IP 地址列表。然后让它尝试使用第一个进行刮擦。如果它失败了,那么尝试下一个,直到没有剩下的检查......

我将如何创建一个列表然后处理错误?

4

1 回答 1

3

最简单的是:

['http://localhost:8080','http://localhost:8888','http://localhost:8000'].each do |proxy|
  break if @doc = Nokogiri::HTML(open(Scrape.scrape_url + page.to_s, :proxy => proxy)) rescue nil
end

请注意“@doc”,因为“doc”将在循环结束时超出范围。

于 2012-06-12T23:25:33.853 回答