Estoy tratando de crear una aplicación para raspar contenido de varias páginas de un sitio. Estoy usando JSoup para conectarme. Este es mi código:Manejo de errores de conexión y 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);
}
}
Todo funciona perfectamente la mayor parte del tiempo. Sin embargo, hay algunas cosas que quiero poder hacer.
Primero, a veces se devuelve un estado 404 o un estado 500 tal vez un 301. Con mi código a continuación, simplemente imprimirá el error y pasará a la siguiente url. Lo que me gustaría poder hacer es tratar de devolver el estado de la url para todos los enlaces. Si la página se conecta imprime a 200, si no imprime el código de estado relevante.
En segundo lugar, a veces capto este error "java.net.SocketTimeoutException: tiempo de espera agotado para leer" Pude aumentar el tiempo de espera sin embargo prefiero intentar conectar 3 veces, al fallar la 3ª vez que deseo agregar la URL a un Matriz "fallida", por lo que puedo volver a intentar las conexiones fallidas en el futuro.
¿Puede alguien con más conocimiento que yo ayudarme?
genera una excepción –