我正試圖創建一個應用程序來刮掉網站上的多個頁面的內容。我正在使用JSoup來連接。這是我的代碼:處理連接錯誤和JSoup
for (String locale : langList){
sitemapPath = sitemapDomain+"/"+locale+"/"+sitemapName;
try {
Document doc = Jsoup.connect(sitemapPath)
.userAgent("Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.21 (KHTML, like Gecko) Chrome/19.0.1042.0 Safari/535.21")
.timeout(10000)
.get();
Elements element = doc.select("loc");
for (Element urls : element) {
System.out.println(urls.text());
}
} catch (IOException e) {
System.out.println(e);
}
}
大部分時間都能正常工作。然而,我想要做的事情有幾件事。
首先有時會返回404狀態,或者500狀態可能是301.下面我的代碼只會打印錯誤並轉到下一個網址。我希望能夠做的是嘗試能夠返回所有鏈接的網址狀態。如果頁面連接打印200,則不打印相關的狀態碼。
其次我有時會發現這個錯誤「java.net.SocketTimeoutException:讀取超時」我可以增加超時但是我寧願嘗試連接3次,失敗後第三次我想將URL添加到「失敗」陣列,以便將來可以重試失敗的連接。
比我有更多知識的人能幫助我嗎?
產生異常 – 2013-10-19 05:33:51