Mechanize を使用して Web サイトにログインし、約 1500 の Web ページを調べて、それぞれの情報を解析するローカル Ruby スクリプトを実行しようとしています。解析は機能しますが、一定の時間だけです。スクリプトは約 45 秒間実行された後、完全に停止し、次のように報告されます。
/Users/myname/.rvm/gems/ruby-1.9.3-p374/gems/mechanize-2.7.1/lib/mechanize/http/agent.rb:306:in `fetch': 503 => Net::HTTPServiceUnavailable for http://example.com/page;53 -- unhandled response (Mechanize::ResponseCodeError)
確かなことは言えませんが、これは接続タイムアウトによるものだと思います。非常に長いタイムアウトを使用してスクリプトでそれを解決しようとしましたが (このスクリプトの実行には最大 15 分かかる場合があります)、それでも何も変わりません。何かアイデアがあれば教えてください。
これは私のスクリプトです:
require 'mechanize'
require 'open-uri'
require 'rubygems'
agent = Mechanize.new
agent.open_timeout = 1000
agent.read_timeout = 1000
agent.max_history = 1
page = agent.get('examplesite.com')
myform = page.form_with(:action => '/maint')
myuserid_field = myform.field_with(:id => "username")
myuserid_field.value = 'myusername'
mypass_field = myform.field_with(:id => "password")
mypass_field.value = 'mypassword'
page = agent.submit(myform, myform.buttons.first)
urlArray = [giant array of webpages here]
urlArray.each do |term|
page = agent.get('' + term + '')
page.encoding = 'windows-1252'
puts agent.page.parser.xpath("//tr[4]/td[2]/textarea/text()").text + 'NEWLINEHERE'
end