Análisis de HTML en Java: resumen de bibliotecas y ejemplos prácticos
El análisis de HTML (extracción de datos de páginas web) es una de las tareas clave en el desarrollo moderno. Java proporciona herramientas potentes para este propósito. En este artículo, analizaremos tres bibliotecas populares: Jsoup, HtmlUnit y Apache Tika. Aprenderá cómo instalarlas, qué problemas resuelven y verá ejemplos de código funcionales.
¿Para qué sirve el análisis de HTML?
El análisis de HTML se utiliza para:
- Recopilar datos de sitios web (precios, noticias, contactos).
- Probar aplicaciones web (extraer elementos de la interfaz).
- Automatizar operaciones rutinarias (rellenar formularios, verificar enlaces).
- Analizar la estructura SEO de los sitios.
1. Jsoup: el analizador HTML más popular para Java
Jsoup es una biblioteca ligera e intuitiva para trabajar con HTML. Puede cargar páginas, analizarlas y extraer datos mediante selectores CSS y métodos similares a jQuery. Jsoup corrige automáticamente el marcado incorrecto, lo que la hace ideal para analizar sitios web reales.
Instalación (Maven)
<dependency> <groupId>org.jsoup</groupId> <artifactId>jsoup</artifactId> <version>1.17.2</version></dependency>Ejemplo: extraer los títulos de todas las noticias
Supongamos que necesitamos obtener todos los títulos de artículos de un portal de noticias. Usamos el selector CSS h2.news-title.
import org.jsoup.Jsoup;import org.jsoup.nodes.Document;import org.jsoup.select.Elements;
public class JsoupExample { public static void main(String[] args) throws Exception { // Cargamos la página HTML Document doc = Jsoup.connect("https://example.com/news") .userAgent("Mozilla/5.0") .timeout(5000) .get();
// Extraemos todos los elementos h2 con la clase "news-title" Elements titles = doc.select("h2.news-title");
// Mostramos el texto de cada título for (var title : titles) { System.out.println(title.text()); } }}Características de Jsoup:
- Funciona sin navegador, solo con solicitudes HTTP.
- Soporte de selectores CSS (como en jQuery).
- Posibilidad de manipular el DOM (agregar, eliminar elementos).
- No puede ejecutar JavaScript.
2. HtmlUnit: análisis con soporte de JavaScript
HtmlUnit es un emulador de navegador en Java. No solo analiza HTML, sino que procesa completamente la página: ejecuta JavaScript, carga CSS y maneja solicitudes AJAX. Ideal para sitios SPA modernos (React, Angular).
Instalación (Maven)
<dependency> <groupId>net.sourceforge.htmlunit</groupId> <artifactId>htmlunit</artifactId> <version>2.70.0</version></dependency>Ejemplo: obtener datos después de la carga de JavaScript
Supongamos que en la página hay un bloque dinámico que aparece 2 segundos después de la carga. HtmlUnit esperará a que aparezca.
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 { try (WebClient webClient = new WebClient()) { // Desactivamos CSS y el registro para mayor velocidad webClient.getOptions().setCssEnabled(false); webClient.getOptions().setJavaScriptEnabled(true);
// Cargamos la página HtmlPage page = webClient.getPage("https://example.com/dynamic");
También en la biblioteca
Trabajo con Excel en Go (Golang): bibliotecas, ejemplos y herramientas
Cliente Redis para C# (.NET): StackExchange.Redis — conexión y ejemplos
Biblioteca estándar de Go (Golang): una visión completa