Creación de un sitio web utilizando un爬虫 Java para imágenes

Para construir un sitio web con contenido dinámico, decidí utilizar un爬虫 en Java para recopilar imágenes desde un sitio externo. A continuación, se detallan las técnicas y herramientas utilizadas.

1. Tipos de爬虫

Existen dos tipos principales de爬虫:

  • Crawlers basados en API: Estos crawlers consumen datos directamenet de una API que proporciona información en formato JSON u otro tipo estructurado.
  • Crawlers HTML estáticos: Estos crawlers analizan el código HTML de una página y extraen información específica del DOM.

En este caso, utilizaremos un爬crawler HTML estático medainte la biblioteca Jsoup, que permite manipular el DOM de manera similar a jQuery.

2. Dependencias Maven necesarias

A continuación, se muestra el extracto del archivo pom.xml con las dependencias requeridas:

<dependencies>
    <!-- Biblioteca para realizar solicitudes HTTP -->
    <dependency>
        <groupId>org.apache.httpcomponents</groupId>
        <artifactId>httpclient</artifactId>
    </dependency>

    <!-- Biblioteca para analizar HTML -->
    <dependency>
        <groupId>org.jsoup</groupId>
        <artifactId>jsoup</artifactId>
    </dependency>
</dependencies>

3. Implementación del爬crawler

3.1 Realización de una solicitud HTTP

Primero, creamos una función para enviar una solicitud HTTP GET a la URL objetivo y obtener el contenido HTML como una cadena.

public static String fetchHtml(String url) throws Exception {
    HttpGet request = new HttpGet(url);
    RequestConfig config = RequestConfig.custom()
            .setConnectTimeout(5000)
            .setSocketTimeout(5000)
            .build();
    request.setConfig(config);

    CloseableHttpClient client = HttpClients.createDefault();
    HttpResponse response = client.execute(request);

    if (response.getStatusLine().getStatusCode() == 200) {
        return EntityUtils.toString(response.getEntity(), "UTF-8");
    } else {
        throw new IOException("Error al obtener la página: " + response.getStatusLine().getStatusCode());
    }
}

3.2 Extracción de datos con Jsoup

Una vez obtenido el contenido HTML, lo procesamos utilizando Jsoup para extraer los elementos deseados.

public static void parseHtml(String htmlContent) {
    Document document = Jsoup.parse(htmlContent);
    Elements images = document.select(".img_box a img");

    for (Element image : images) {
        String altText = image.attr("alt");
        String imageUrl = image.attr("src");
        System.out.println("Texto alternativo: " + altText);
        System.out.println("URL de la imagen: " + imageUrl);
    }
}

4. Ejemplo práctico

Supongamos que queremos extraer todas las imágenes de la siguiente URL:

String targetUrl = "https://www.ejemplo.com/galeria";
try {
    String html = fetchHtml(targetUrl);
    parseHtml(html);
} catch (Exception e) {
    e.printStackTrace();
}

Este código obtiene el contenido HTML de la página, extrae las etiquetas ![]() dentro del contenedor .img_box y muestra tanto el texto alternativo como la URL de cada imagen.

Con esta técnica, puedes automatizar la recolección de imágenes y generar un sitio web dinámico con el contenido obtenido.

Etiquetas: java Jsoup HttpClient

Publicado el 9-9 11:12