2016-11-09 19 views
0

これは初めてのJSoupです。情報を解析するURLに接続する際に問題が発生しています。Jsoupを使用してWebページに接続する際の問題

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

私はもともとこれを実行しようとしました、しかし、私はここで

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

タイムアウト例外を得ていたことは例外である:

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) 

私はいくつかの研究をしましたオンラインで、Jsoupタイムアウトを無限に設定する.timeout(0)メソッドが見つかりました。私はこの

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

をしようとすると、

は今、私は次の例外を取得:

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) 

誰かが私がjsoupにこのURLをロードする方法の正しい方向に私を指すしてくださいもらえますか?

答えて

1

403エラーは、サーバーがアクセスを禁止していることを意味します。 あなただけの、次のようにHTTPヘッダーにuserAgentプロパティを追加する必要がありますいくつかのサイトは、ロボットを許可していない

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

、それは、このサイトでは何が起こっているかです。 ユーザエージェントは制限されないように追加する必要があります。

関連する問題