我正试图创建一个应用程序来刮掉网站上的多个页面的内容。我正在使用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