Я пытаюсь создать приложение для извлечения контента с нескольких страниц сайта. Я использую 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 раза, после неудачной попытки в 3-й раз я хочу добавить URL-адрес в « failed», чтобы я мог повторить неудачные подключения в будущем.
Может ли мне помочь кто-нибудь, у кого больше знаний, чем у меня?