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 También en la biblioteca
Autorización y autenticación en C# (.NET): Guía completa
Sarama para Go: guía completa con ejemplos
Trabajo con Apache Kafka en C# (.NET): biblioteca Confluent.Kafka
Autorización y autenticación en C++: bibliotecas, ejemplos e implementación