Java: la forma más rápida de comprobar si existe una URL
jsoup (3)
Hola, estoy escribiendo un programa que pasa por muchas direcciones URL diferentes y solo comprueba si existen o no. Básicamente estoy comprobando si el código de error devuelto es 404 o no. Sin embargo, como estoy revisando más de 1000 URL, quiero poder hacer esto muy rápidamente. El siguiente es mi código, me preguntaba cómo puedo modificarlo para que funcione rápidamente (si es posible):
final URL url = new URL("http://www.example.com");
HttpURLConnection huc = (HttpURLConnection) url.openConnection();
int responseCode = huc.getResponseCode();
if (responseCode != 404) {
System.out.println("GOOD");
} else {
System.out.println("BAD");
}
¿Sería más rápido usar JSoup?
Soy consciente de que algunos sitios dan el código 200 y tienen su propia página de error, sin embargo, sé que los enlaces que estoy comprobando no hacen esto, por lo que no es necesario.
Intenta preguntar al siguiente servidor DNS.
class DNSLookup
{
public static void main(String args[])
{
String host = ".com";
try
{
InetAddress inetAddress = InetAddress.getByName(host);
// show the Internet Address as name/address
System.out.println(inetAddress.getHostName() + " " + inetAddress.getHostAddress());
}
catch (UnknownHostException exception)
{
System.err.println("ERROR: Cannot access ''" + host + "''");
}
catch (NamingException exception)
{
System.err.println("ERROR: No DNS record for ''" + host + "''");
exception.printStackTrace();
}
}
}
Intente enviar una solicitud "HEAD" en lugar de obtener una solicitud. Eso debería ser más rápido ya que el cuerpo de la respuesta no se descarga.
huc.setRequestMethod("HEAD");
Nuevamente, en lugar de verificar si el estado de la respuesta no es 400, verifique si es 200. Eso es verificación para positivo en lugar de negativo. 404,403,402 ... todos los estados 40x son casi equivalentes a una URL no existente no válida.
Puede hacer uso de subprocesos múltiples para hacerlo aún más rápido.
Parece que puede establecer la propiedad de tiempo de espera, asegúrese de que sea aceptable. Y si tienes muchas URL para probar, hazlas paralelamente, será mucho más rápido. Esperamos que esto sea útil.