Descargar el HTML de una página web con Java
Como en el post anterior, esta vez tenemos un objetivo similar, hacer que una función nos descargue de internet el código HTML de una página y lo almacene en un String.
El código no varía mucho, sólo que esta vez como sabemos que vamos a leer texto y no datos binarios, para leer el archivo remoto utilizaremos un BufferedReader.
* Devuelve el HTML de una página web
* @param direccionUrl Página web a descargar
* @return string con el código HTML de la página
*/
public static String dameHTML(String direccionUrl) {
try {
URL dir = new URL(direccionUrl);
URLConnection yc = dir.openConnection();
// Aquí agregamos unas cabeceras a la petición para "saltar" la seguridad de algunos sitios
// así piensan que somos un navegador.
yc.addRequestProperty("User-Agent", "Mozilla/5.0 (Windows; U; Windows NT 5.1; es-ES; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10");
yc.addRequestProperty("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
yc.addRequestProperty("Accept-Language", "es-es,es;q=0.8,en-us;q=0.5,en;q=0.3");
yc.setConnectTimeout(3000);
//Creamos el objeto con el que vamos a leer
BufferedReader in = new BufferedReader(new InputStreamReader(yc.getInputStream()));
String inputLine;
String retorno = "";
while ((inputLine = in.readLine()) != null) {
retorno += inputLine + ‘\n‘;
}
in.close();
return retorno;
} catch (Exception ex) {
//Dejamos constancia en el log si hubo alguna excepción
Logger.getLogger(NombreDeLaClase.class.getName()).log(Level.SEVERE, "Error al leer HTML de " + direccionUrl, ex);
}
//Si llegamos aquí hubo una excepción y devolvemos null
return null;
}
muchas gracias estaba buscando exactamente esto, interesante la informacion, voy a ver si logro correrlo.
funciona perfecto!!!!
funcoina bien, pero netbeans me muestra un error en
Logger.getLogger(NombreDeLaClase.class.getName()).log(Level.SEVERE, “Error al leer HTML de ” + direccionUrl, ex);
subraya Logger y Level por que? que debo agregar al codigo?
En el código puse sólo la función.
El subrayado en el NetBeans se debe seguramente a que faltan los “imports” para la clase Logger.
Esto se soluciona de 2 formas:
1. Comentando la línea, que sirve sólo para información a la hora de depurar.
2. Click derecho y elegir la opción de “Fix imports” y ya hace el trabajo NetBeans el solito.
Gracias por la idea, la cuestion es que el while hace que leer el contenido sea muy lento, es decir que ciertas web puede tardar hasta 20seg en leer el content.
Alguien conoce una forma rapida de leer todo el contenido html sin necesitta de linea por linea.
graciass..
saludos