[英]Jsoup SocketTimeoutException: Read timed out
當我嘗試使用 Jsoup 解析大量 HTML 文檔時,出現SocketTimeoutException
。
例如,我得到了一個鏈接列表:
<a href="www.domain.com/url1.html">link1</a>
<a href="www.domain.com/url2.html">link2</a>
<a href="www.domain.com/url3.html">link3</a>
<a href="www.domain.com/url4.html">link4</a>
對於每個鏈接,我解析鏈接到 URL 的文檔(來自 href 屬性)以獲取這些頁面中的其他信息。
所以我可以想象這會花費很多時間,但是如何關閉這個異常這是整個堆棧跟蹤:
java.net.SocketTimeoutException: Read timed out
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.read(Unknown Source)
at java.io.BufferedInputStream.fill(Unknown Source)
at java.io.BufferedInputStream.read1(Unknown Source)
at java.io.BufferedInputStream.read(Unknown Source)
at sun.net.www.http.HttpClient.parseHTTPHeader(Unknown Source)
at sun.net.www.http.HttpClient.parseHTTP(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
at java.net.HttpURLConnection.getResponseCode(Unknown Source)
at org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:381)
at org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:364)
at org.jsoup.helper.HttpConnection.execute(HttpConnection.java:143)
at org.jsoup.helper.HttpConnection.get(HttpConnection.java:132)
at app.ForumCrawler.crawl(ForumCrawler.java:50)
at Main.main(Main.java:15)
我想你能做到
Jsoup.connect("...").timeout(10 * 1000).get();
將超時設置為 10 秒。
我有同樣的錯誤:
java.net.SocketTimeoutException: Read timed out
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.socketRead(SocketInputStream.java:116)
at java.net.SocketInputStream.read(SocketInputStream.java:171)
at java.net.SocketInputStream.read(SocketInputStream.java:141)
只有設置.userAgent(Opera)
對我有用。
因此,我使用Connection userAgent(String userAgent)
方法來設置 Jsoup 用戶代理。
就像是:
Jsoup.connect("link").userAgent("Opera").get();
https://jsoup.org/apidocs/org/jsoup/Connection.html有錯誤。 默認超時不是 30 秒。 這是3秒。 只需查看代碼中的 javadoc 即可。 它說3000毫秒。
這應該工作: Jsoup.connect(url.toLowerCase()).timeout(0);
.
從 jsoup 連接時設置超時。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.