在 Ruby 抓取中转义 Mechinze 错误

Escape Mechinze Error in Ruby Scraping

我在尝试抓取 SERP 结果时收到以下服务器响应错误:

/Users/*********/.rvm/gems/ruby-2.3.0/gems/mechanize-2.7.5/lib/mechanize/http/agent.rb:323:in `fetch': 503 => Net::HTTPServiceUnavailable for http://******.*****.com/sorry/index?continue=http://www.********.com/search%3Fq%3D<term1>%2B<term2> -- unhandled response (Mechanize::ResponseCodeError)

我正在想办法逃避错误/异常,让程序继续运行而不是自动退出。

就像 Ruby 中的任何内容一样,它可能归结为 rescue 并恢复:

loop do
  begin
    Mechanize.do_stuff!

    # Success!
    break

  rescue Mechanize::ResponseCodeError
    # Server-side failure, so let's try again after a quick break
    sleep(10)
  end
end

请注意 sleep(10) 是为了避免猛烈撞击服务器并使其故障更加严重。