サイトの複数のページからコンテンツを取得するアプリケーションを作成しようとしています。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:Read timed out」が発生することがありますが、タイムアウトを増やすことはできますが、3回失敗すると、「失敗した」配列にURLを追加したいので3回接続を試みます。後で失敗した接続を再試行できます。
私よりも知識のある人が私を助けてくれますか?