Inicio > Java, Programación > Descargar el HTML de una página web con Java

Descargar el HTML de una página web con Java

Miércoles, 27 de Mayo de 2009

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;
    }

 

peter Java, Programación , , ,

  1. juanchin
    Sábado, 8 de Mayo de 2010 a las 18:04 | #1

    muchas gracias estaba buscando exactamente esto, interesante la informacion, voy a ver si logro correrlo.

  2. juanchin
    Sábado, 8 de Mayo de 2010 a las 18:27 | #2

    funciona perfecto!!!!

  3. jarturo
    Lunes, 14 de Junio de 2010 a las 16:30 | #3

    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?

  4. peter
    Lunes, 14 de Junio de 2010 a las 16:48 | #4

    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.

  5. Daniel
    Miércoles, 23 de Junio de 2010 a las 12:37 | #5

    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

  1. Sin trackbacks aún.