Sto provando a creare un'applicazione per raschiare il contenuto da più pagine su un sito. Sto usando JSoup per connetterti. Questo è il mio codice:Gestione degli errori di connessione e 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);
}
}
Tutto funziona perfettamente la maggior parte del tempo. Tuttavia ci sono alcune cose che voglio essere in grado di fare.
Per prima cosa a volte viene restituito uno stato 404 o uno stato 500 forse un 301. Con il mio codice qui sotto verrà stampato l'errore e spostato sull'URL successivo. Quello che vorrei essere in grado di fare è cercare di essere in grado di restituire lo stato dell'URL per tutti i link. Se la pagina si connette stampare un 200, se non stampare il codice di stato rilevante.
In secondo luogo a volte viene rilevato questo errore "java.net.SocketTimeoutException: lettura scaduta" Potrei aumentare il mio timeout, tuttavia preferirei provare a connettersi 3 volte, in caso di mancata terza volta voglio aggiungere l'URL a un array "fallito" in modo da poter riprovare le connessioni fallite in futuro.
Qualcuno con più conoscenza di me può darmi una mano?
genera un'eccezione –