wie man die HTTP-Fehler-URL korrigiert. Status = 500 in Java beim Crawlen?

8

Ich versuche, die Bewertungen der Nutzer von Kinofilmen von imdb von der Bewertungsseite zu crawlen: (Anzahl der Filme in meiner Datenbank ist etwa 600.000). Ich benutzte jsoup, um Seiten wie unten zu analysieren: (Entschuldigung, ich habe den ganzen Code hier nicht geschrieben, weil es zu lang ist)

%Vor%

Ich habe es für die ersten 100, dann die ersten 500 und auch für die ersten 2000 Filme in meinem db getestet und es hat gut funktioniert. Aber das Problem ist, dass wenn ich 100.000 Filme getestet habe, habe ich diesen Fehler:

%Vor%

Ich habe viel nach diesem Fehler gesucht und festgestellt, dass es sich um einen serverseitigen Fehler mit der Fehlernummer 5xx handelt.

Dann habe ich beschlossen, eine Bedingung zu setzen, dass, wenn die Verbindung fehlschlägt, es noch zweimal versucht und dann, wenn immer noch keine Verbindung hergestellt werden konnte, nicht aufhört und zur nächsten URL geht. Da ich neu in Java bin, habe ich versucht, nach ähnlichen Fragen zu suchen und diese Antworten in stackoverflow zu lesen:

Ausnahmen, während ich Daten aus einem Web extrahiere Website

Jsoup-Fehlerbehandlung, wenn keine Verbindung hergestellt werden konnte Webseite

Umgang mit Verbindungsfehlern und JSoup

Aber wenn ich mit "Connection.Response" versuche, wie sie es vorschlagen, sagt es mir, dass "Connection.Response kann nicht in einen Typ aufgelöst werden".

Ich schätze es, wenn jemand mir helfen könnte, da ich nur ein Neuling bin und ich weiß, dass es einfach sein könnte, aber ich weiß nicht, wie ich es beheben kann.

Nun, ich könnte den HTTP-Fehlerstatus 500 beheben, indem ich einfach "ignoreHttpError (true)" wie folgt hinzufüge:

%Vor%

hoffe, es kann denen helfen, die denselben Fehler haben.

Nach dem Crawlen der Review-Seiten von 22907 Filmen (ca. 12 Stunden) habe ich einen weiteren Fehler bekommen:
          "READ TIMED OUT".

Ich schätze jeden Vorschlag, um diesen Fehler zu beheben.

    
mOna 18.02.2014, 15:49
quelle

1 Antwort

12

Aktualisieren Sie meine Kommentare auf eine Antwort:

Connection.Response ist org.jsoup.Connection.Response

Um document instance nur zuzulassen, wenn ein gültiger http-Code (200) vorhanden ist, brechen Sie Ihren Anruf in drei Teile auf; Connection , Response , Document

Daher wird Ihr Teil des obigen Codes wie folgt geändert:

%Vor%     
PopoFibo 18.02.2014, 16:59
quelle

Tags und Links