2017-04-26 7 views
0

Ich erhalte die folgenden Server-Response-Fehler beim Versuch, SERP Ergebnisse zu kratzen:Scraping

/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) 

ich versuche, herauszufinden, wie der Fehler/Ausnahme zu entkommen, so dass das Programm weiterhin ausführen anstatt automatisch zu beenden.

+0

Bitte lesen Sie "[ask]" einschließlich der verlinkten Seiten, "[mcve]" und "[Wie viel Forschungsaufwand wird von Stack Overflow-Benutzern erwartet?] (Http://meta.stackoverflow.com/questions/261592) ". Wir würden gerne Beweise für Ihre Bemühungen sehen. Was hast du versucht? Hast du gesucht und nichts gefunden? Hast du Sachen gefunden, aber es hat nicht geholfen? Hast du versucht, Code zu schreiben? Wenn nicht, warum? Wenn ja, was ist das kleinste Code-Beispiel, das zeigt, was Sie versucht haben und warum hat es nicht funktioniert? Ohne das sieht es so aus, als hättest du nicht versucht, dass wir es für dich schreiben. –

+0

Punkt genommen, lesen Sie die vorgeschlagenen Dokumente. Es wird angestrebt, diese Prinzipien in nachfolgenden Fragen zu berücksichtigen. – HMLDude

Antwort

2

Wie alles in Ruby es kocht wahrscheinlich auf rescue nach unten und erholen:

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 

Notiere die sleep(10) gibt es den Server wütend zu vermeiden Zuschlagen und macht es noch schwieriger, eine Fehlfunktion.

+0

Warum ist die break-Anweisung erforderlich? – HMLDude

+0

Ich nehme an, Sie wollen nicht immer und immer wieder dieselbe Seite holen. – tadman