Ich analysiere eine Website mit Ruby Nokogiri, aber nach vielen Anfragen blockieren die Seiten mich, also muss ich auf der letzten Seite, die ich analysiert habe, erneut versuchen (der Link wird von der @next_link).Ich kann die Seite nach vielen Anfragen nicht neu laden
Ich habe versucht, mit der sleep
Methode, Ausnahmen e viele Dinge. Nichts funktioniert.
Ich habe zum Beispiel 150 Seiten zu analysieren, aber auf Seite 25 werde ich blockiert.
Diese Funktion macht eine Schleife durch meine Seiten:
def final_results(range, link)
(range[:start]..range[:finish]).each do |page_number|
begin
if page_number == 1
parse_response(parser('utf-8', 'iso-8859-1'))
elsif page_number == 2
get_next_link(link)
else
get_next_link(@next_link)
end
rescue Exception => e
range = {:start => page_number, :finish => range[:finish]}
final_results(range, link)
end
end
end
dieser Funktion wird die nächste Seite Link erhält und analysiert die aktuelle Seite:
def get_next_link(link)
begin
post((BASE_URL + link), request_with_captcha_solution)
aux = parser('utf-8', 'iso-8859-1')
parse_response(aux)
paginator_table = aux.css('table.fonte11')[1].children[1]
@next_link = paginator_table.children[3].children[-2]['href']
rescue Exception => e
@error_message ="#{$!}"
end
@next_link
end
Ich habe versucht, diese vor, sogar mit 1 Minute Schlaf nicht funktioniert hat. – Monique
Es ist also möglich, dass der Mechanismus zur Ratenbegrenzung Sie nach einer Reihe von Anfragen für eine Weile blockiert. Sie könnten versuchen, ein VPN zu verwenden, um es von verschiedenen IP-Adressen zu treffen, aber das ist ein bisschen "zwielichtig". Der Betreiber der Website möchte nicht, dass Sie es so krabbeln. Frage: Wenn die Anforderungen fehlschlagen, welchen Statuscode erhalten Sie in der Antwort? – hoffm