Análisis de HTML en Java: bibliotecas Jsoup y HtmlUnit

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Análisis de HTML en Java: descripción general de las bibliotecas Jsoup y HtmlUnit



El análisis de HTML (o web scraping) es el proceso de extraer datos de documentos HTML. En Java, existen varias bibliotecas potentes para esta tarea, entre las que destacan Jsoup (para HTML estático) y HtmlUnit (para páginas dinámicas con JavaScript). En este artículo, analizaremos ambas bibliotecas en detalle, mostraremos ejemplos de código y ayudaremos a elegir la herramienta adecuada para su proyecto en pythonlib.ru.



¿Qué es Jsoup?

Jsoup es una biblioteca ligera para analizar, extraer y manipular documentos HTML. Admite selectores CSS, lo que la hace intuitiva para los desarrolladores web. Jsoup funciona con cualquier HTML, incluso si está mal formateado.



Instalación de Jsoup

Agregue la dependencia a su pom.xml (Maven):

<dependency>    <groupId>org.jsoup</groupId>    <artifactId>jsoup</artifactId>    <version>1.17.2</version></dependency>


Ejemplo de análisis con Jsoup

Veamos un ejemplo básico: obtener el título de la página y todos los enlaces:

import org.jsoup.Jsoup;import org.jsoup.nodes.Document;import org.jsoup.nodes.Element;import org.jsoup.select.Elements;

public class JsoupExample { public static void main(String[] args) throws Exception { // 1. Cargamos el documento HTML Document doc = Jsoup.connect("https://example.com").get();

// 2. Extraemos el título de la página String title = doc.title(); System.out.println("Título: " + title);

// 3. Encontramos todos los enlaces (etiquetas <a>) Elements links = doc.select("a[href]"); for (Element link : links) { String href = link.attr("href"); String text = link.text(); System.out.println("Enlace: " + href + " — texto: " + text); }

// 4. Extraemos el texto de un bloque específico (por ejemplo, <div class="content">) Element content = doc.selectFirst("div.content"); if (content != null) { System.out.println("Contenido del bloque: " + content.text()); } }}

En este ejemplo, Jsoup.connect() realiza una solicitud HTTP y select() usa selectores CSS para buscar elementos. Jsoup también puede trabajar con archivos locales y cadenas HTML.



¿Qué es HtmlUnit?

HtmlUnit es un navegador sin interfaz gráfica (headless browser) en Java. No solo analiza HTML, sino que también ejecuta JavaScript, procesa solicitudes AJAX y emula acciones del usuario. Es la opción ideal para sitios donde el contenido se carga dinámicamente.



Instalación de HtmlUnit

<dependency>    <groupId>net.sourceforge.htmlunit</groupId>    <artifactId>htmlunit</artifactId>    <version>2.70.0</version></dependency>


Ejemplo de análisis con HtmlUnit

Análisis de una página que carga datos a través de JavaScript:

import com.gargoylesoftware.htmlunit.WebClient;import com.gargoylesoftware.htmlunit.html.HtmlPage;import com.gargoylesoftware.htmlunit.html.HtmlElement;

public class HtmlUnitExample { public static void main(String[] args) throws Exception { // 1. Creamos un WebClient (análogo al navegador) try (WebClient webClient = new WebClient()) { // Desactivamos CSS y el registro para acelerar webClient.getOptions().setCssEnabled(false); webClient.getOptions().setJavaScriptEnabled(true); webClient.getOptions().setThrowExceptionOnScriptError(false);

// 2. Cargamos la página (JavaScript se ejecutará automáticamente) HtmlPage page = webClient.getPage("https://example.com/dynamic");

// 3. Esperamos, p

Recommendations