我正在尝试创建一个应用程序来从网站上的多个页面中抓取内容。我正在使用 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。使用下面的代码,它只会打印错误并移至下一个 url。我想做的是尝试能够返回所有链接的 url 状态。如果页面连接打印一个200,如果没有打印相关的状态码。
其次,我有时会捕获此错误“java.net.SocketTimeoutException:读取超时”我可以增加我的超时但是我更愿意尝试连接 3 次,在第三次失败时我想将 URL 添加到“失败”数组所以我可以在以后重试失败的连接。
比我有更多知识的人可以帮助我吗?