2016-11-09 1 views
0

Dies ist das erste Mal, dass ich JSoup verwende, und ich habe ein Problem beim Herstellen einer Verbindung zu einer URL, von der Informationen analysiert werden sollen.Probleme bei der Verwendung von Jsoup zum Herstellen einer Verbindung mit einer Webseite

Die url: http://uselectionatlas.org/RESULTS/national.php?f=1&year=2008&off=0&elect=0

ich ursprünglich versucht, dies zu tun, aber ich war

Document doc = Jsoup.connect("http://uselectionatlas.org/RESULTS/national.php?f=1&year=2008&off=0&elect=0").get(); 

Hier ein Timeout Ausnahme immer die Ausnahme:

java.net.SocketTimeoutException: Read timed out 
    at java.net.SocketInputStream.socketRead0(Native Method) 
    at java.net.SocketInputStream.read(SocketInputStream.java:152) 
    at java.net.SocketInputStream.read(SocketInputStream.java:122) 
    at java.io.BufferedInputStream.fill(BufferedInputStream.java:235) 
    at java.io.BufferedInputStream.read1(BufferedInputStream.java:275) 
    at java.io.BufferedInputStream.read(BufferedInputStream.java:334) 
    at sun.net.www.http.HttpClient.parseHTTPHeader(HttpClient.java:687) 
    at sun.net.www.http.HttpClient.parseHTTP(HttpClient.java:633) 
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1324) 
    at java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:468) 
    at org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:575) 
    at org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:548) 
    at org.jsoup.helper.HttpConnection.execute(HttpConnection.java:235) 
    at org.jsoup.helper.HttpConnection.get(HttpConnection.java:224) 
    at ParseData.main(ParseData.java:18) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:606) 
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:144) 

ich tat etwas Forschung online und ich fand eine Methode .timeout (0), die das Jsoup Timeout auf unendlich setzt. Jetzt

wenn ich versuche, diese

  Document doc = Jsoup.connect("http://uselectionatlas.org/RESULTS/national.php?f=1&year=2008&off=0&elect=0").timeout(0).get(); 

ich die folgende Ausnahme erhalten:

org.jsoup.HttpStatusException: HTTP error fetching URL. Status=403, URL=http://uselectionatlas.org/RESULTS/national.php?f=1&year=2008&off=0&elect=0 
    at org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:598) 
    at org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:548) 
    at org.jsoup.helper.HttpConnection.execute(HttpConnection.java:235) 
    at org.jsoup.helper.HttpConnection.get(HttpConnection.java:224) 
    at ParseData.main(ParseData.java:18) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:606) 
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:144) 

Könnte jemand bitte mich in die richtige Richtung zeigen, wie ich diese URL in jsoup werden Laden sollte?

Antwort

1

Ein 403-Fehler bedeutet, dass der Server den Zugriff verweigert. Sie müssen nur die Useragent-Eigenschaft auf HTTP-Header hinzufügen, wie folgt:

Jsoup.connect("http://uselectionatlas.org/RESULTS/national.php?f=1&year=2008&off=0&elect=0") 
.userAgent("Mozilla/5.0") 
.timeout(0).get(); 
1

Einige Websites Roboter nicht zulassen, ist das, was für diese Seite geschieht. Sie müssen einen Benutzeragenten hinzufügen, damit er nicht eingeschränkt wird.

Verwandte Themen