Jsoup (1.6.2) を使用して特定の Web サイトのテキストをダウンロードする小さなコードを作成しました。
public String readPage(String url) {
try {
long start = System.currentTimeMillis();
String text = Jsoup.connect(url).timeout(10000).get().html();
System.out.println(System.currentTimeMillis() - start);
return text;
}
catch (IOException e) {
// we need to do this because the log file is flooded with useless error messages
if ( e.getMessage().contains("Unhandled content type") ||
e.getMessage().contains("Premature EOF") ||
e.getMessage().contains("Read timed out") ||
e.getMessage().contains("403 error loading URL") ||
e.getMessage().contains("404 error loading URL") ||
e.getMessage().contains("405 error loading URL") ||
e.getMessage().contains("500 error loading URL") ||
e.getMessage().contains("503 error loading URL") ) {
logger.debug(String.format("Error crawling website: %s", url));
}
else logger.error(String.format("Error crawling website: %s", url), e);
}
return "";
}
このメソッドは、スレッドのリスト内で開始します。各スレッドは、1 つの Web サイトのダウンロードを担当します。私の見解では (これは明らかに間違っています)、Jsoup は例外をスローする必要があるため、すべての system.out は 10000 未満の数値を表示する必要があります。ただし、stdout に 100k を超えるタイムスパンがある場合はそうではありません。
これはどのように可能で、何が間違っていますか?
乾杯ダニエル