Parseo de HTML en Java: Jsoup, HtmlUnit y otras herramientas

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

Parseo de HTML en Java: revisión de bibliotecas y herramientas



El parseo de HTML es el proceso de extracción de datos estructurados a partir de documentos HTML. En Java, existen varias bibliotecas potentes para esta tarea, que permiten no solo analizar páginas estáticas, sino también procesar contenido dinámico. En este artículo, revisaremos tres de las herramientas más populares: Jsoup, HtmlUnit y Jericho HTML Parser. Cada una tiene sus propias características y áreas de aplicación.



1. Jsoup — parser HTML universal



Jsoup es la biblioteca Java más popular para trabajar con HTML. Proporciona una API conveniente para cargar, analizar y extraer datos, además de soportar selectores CSS y manipulaciones del árbol DOM. Jsoup es ideal para páginas estáticas y tareas simples de web scraping.



Funcionalidades principales:

  • Carga de HTML desde URL, archivo o cadena de texto
  • Extracción de datos mediante selectores CSS
  • Limpieza de HTML eliminando etiquetas no deseadas
  • Modificación del DOM (añadir/eliminar elementos)
  • Corrección automática de HTML no válido


Ejemplo de código: extracción de titulares de noticias

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 encabezados h2 con la clase "news-title" Elements titles = doc.select("h2.news-title"); // Mostramos el texto de cada encabezado titles.forEach(title -> System.out.println(title.text())); }}


2. HtmlUnit — parseo con soporte de JavaScript



HtmlUnit es un navegador headless en Java que emula el funcionamiento de un navegador web. A diferencia de Jsoup, ejecuta código JavaScript, maneja peticiones AJAX y soporta cookies. Es una herramienta indispensable para el parseo de aplicaciones SPA modernas y sitios con contenido dinámico.



Características clave:

  • Emulación completa del navegador (Chrome, Firefox, IE)
  • Ejecución de JavaScript (incluyendo jQuery y React)
  • Soporte para formularios, clics y navegación entre páginas
  • Manejo de cookies, sesiones y redirecciones
  • Soporte integrado para XPath y selectores CSS


Ejemplo de código: esperar la carga de contenido dinámico

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 el registro y los tiempos de espera webClient.getOptions().setThrowExceptionOnScriptError(false); webClient.getOptions().setJavaScriptEnabled(true); // Cargamos la página HtmlPage page = webClient.getPage("https://example.com/dynamic"); // Esperamos 2 segundos para la ejecución de JS webClient.waitForBackgroundJavaScript(2000); // Extraemos datos mediante XPath HtmlElement element = page.getFirstByXPath("//div[@class='result']/p"); System.out.println("Resultado: " + element.getTextContent()); } }}


3. Jericho HTML Parser — ligero y rápido



Jericho HTML Parser es una biblioteca ligera con dependencias mínimas. Maneja excelentemente el parseo de HTML no válido y proporciona acceso de bajo nivel a la estructura del documento.

Recommendations