Jsoup para Java: Guía completa de parseo HTML
1. ¿Qué es Jsoup y para qué sirve?
Jsoup es una potente y práctica librería de código abierto para Java, diseñada para parsear (analizar), extraer datos y manipular documentos HTML. Ofrece a los desarrolladores una API limpia e intuitiva que permite trabajar con HTML con la misma facilidad que con el árbol DOM en un navegador. Si alguna vez has tenido que escribir expresiones regulares para extraer datos de páginas web, sabes lo frágil y difícil de mantener que puede ser esa solución. Jsoup resuelve este problema proporcionando una herramienta robusta y flexible.
La función principal de Jsoup es el parseo de HTML. Puede recibir como entrada una cadena de texto, una URL o un archivo, y convertirlos en un modelo de objeto de documento (DOM). A partir de ahí, puedes usar selectores CSS (como en jQuery) o navegar por el árbol DOM para buscar y extraer elementos específicos, sus atributos y contenido textual. Además, Jsoup puede limpiar HTML de elementos potencialmente peligrosos (como ataques XSS) y modificar el documento: añadir, eliminar o cambiar etiquetas y su contenido.
¿Para qué sirve? Los campos de aplicación de Jsoup son muy amplios: desde escribir parsers simples para recolección de datos (web scraping) y monitoreo de precios, hasta crear sistemas complejos de análisis de contenido, probar aplicaciones web e integrarse con CMS. Jsoup es el estándar de facto para trabajar con HTML en el mundo Java, y conocerlo es obligatorio para cualquier desarrollador Java que trabaje con tecnologías web.
2. Instalación de Jsoup
Jsoup se distribuye como un archivo JAR, pero la forma más sencilla es agregarlo mediante un sistema de compilación. A continuación, se muestran los comandos para Maven y Gradle.
Maven (pom.xml)
<dependency>
<groupId>org.jsoup</groupId>
<artifactId>jsoup</artifactId>
<version>1.17.2</version>
</dependency>
Gradle (build.gradle)
implementation 'org.jsoup:jsoup:1.17.2'
Si no usas sistemas de compilación, descarga el archivo JAR desde el sitio oficial y agrégalo al classpath de tu proyecto.
3. Inicio rápido: ejemplo mínimo funcional
Escribamos un programa sencillo que cargue la página principal de Google y muestre su título.
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
public class InicioRapido {
public static void main(String[] args) throws Exception {
// 1. Cargamos el documento HTML desde una URL
Document doc = Jsoup.connect("https://www.google.com").get();
// 2. Extraemos el título de la página (contenido de la etiqueta <title>)
String title = doc.title();
// 3. Mostramos el resultado
System.out.println("Título de la página: " + title);
}
}
Este código realiza una solicitud HTTP GET a la URL indicada, parsea el HTML obtenido y devuelve un objeto Document. El método title() es una forma práctica de obtener el contenido de la etiqueta <title>. La salida será algo como: Título de la página: Google.
4. Métodos y clases principales de Jsoup
Veamos las clases y métodos clave de la librería. Todos los ejemplos asumen que ya has importado org.jsoup.Jsoup y org.jsoup.nodes.*.
4.1. Jsoup.connect(String url)
Firma: public static Connection connect(String url)
Qué hace: Crea una nueva conexión HTTP a la URL especificada. Devuelve un objeto Connection, que permite configurar la solicitud (método HTTP, cabeceras, datos POST, etc.) antes de ejecutarla.