Análisis de HTML en Kotlin: bibliotecas y ejemplos de código

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 Kotlin: revisión de bibliotecas y ejemplos prácticos

Kotlin es un lenguaje moderno y multiplataforma que se utiliza activamente para el desarrollo de aplicaciones de servidor, aplicaciones Android y herramientas de automatización. Una de las tareas comunes es el análisis de HTML: extraer datos de páginas web, trabajar con el árbol DOM o generar plantillas HTML. En este artículo, revisaremos las principales bibliotecas para el análisis de HTML en Kotlin, sus características y proporcionaremos ejemplos de código funcionales.



¿Por qué es necesario el análisis de HTML en Kotlin?

El análisis de HTML se requiere en escenarios como:

  • Recopilación de datos de sitios web (web scraping).
  • Automatización de pruebas de interfaces web.
  • Generación de informes HTML o plantillas de correo electrónico.
  • Procesamiento y análisis de contenido obtenido de API o archivos.

Gracias a la compatibilidad con Java y sus propias construcciones DSL, Kotlin ofrece tanto bibliotecas Java probadas como soluciones nativas.



1. Jsoup — analizador universal de HTML/XML

Jsoup es la biblioteca más popular para el análisis de HTML en el ecosistema JVM. Proporciona una API conveniente para cargar, analizar y manipular documentos HTML, admite selectores CSS y métodos similares a jQuery. Para Kotlin, Jsoup es perfecto gracias a su total compatibilidad con Java y la posibilidad de usar extensiones de Kotlin.



Instalación (Gradle)

dependencies {    implementation("org.jsoup:jsoup:1.17.2")}


Ejemplo: extracción de títulos de artículos de un blog

import org.jsoup.Jsoupimport org.jsoup.nodes.Document

fun main() { // Cargamos el documento HTML desde una URL val doc: Document = Jsoup.connect("https://example.com/blog").get()

// Extraemos todos los encabezados h2 con la clase "post-title" val titles = doc.select("h2.post-title")

// Mostramos el texto de cada encabezado titles.forEach { title -> println(title.text()) }

// Ejemplo usando selector CSS: todos los enlaces dentro de artículos val links = doc.select("article a[href]") links.forEach { link -> println("${link.text()} -> ${link.attr("href")}") }}

Jsoup también permite analizar HTML desde una cadena, archivo o InputStream, así como limpiar HTML de elementos potencialmente peligrosos (protección XSS).



2. kotlinx.html — DSL tipado seguro para trabajar con HTML

kotlinx.html es la biblioteca oficial de JetBrains, diseñada para generar código HTML mediante un DSL tipado seguro. A diferencia de Jsoup, no analiza HTML existente, sino que lo crea. Sin embargo, se puede combinar con Jsoup para un ciclo completo: análisis → modificación → generación.



Instalación (Gradle)

dependencies {    implementation("org.jetbrains.kotlinx:kotlinx-html-jvm:0.11.0")}


Ejemplo: generación de una página HTML

import kotlinx.html.*import kotlinx.html.stream.createHTML

fun main() { val htmlContent = createHTML().html { head { title("Página de ejemplo") meta(charset = "UTF-8") } body { h1 { +"¡Hola, Kotlin!" } p { +"Este es un párrafo generado con " b { +"kotlinx.html" } } ul { li { +"Elemento 1" } li { +"Elemento 2" } li { +"Elemento 3" } } } } println(htmlContent)}

Este enfoque es especialmente útil para crear informes, plantillas de correo electrónico o páginas dinámicas en el servidor (Ktor).



3. Ktor Client + Jsoup — para análisis con solicitudes HTTP

Si es necesario realizar solicitudes HTTP complejas (con cookies, encabezados, autenticación) antes del análisis, es conveniente usar Ktor Client junto con Jsoup. Ktor es un cliente HTTP asíncrono que se integra perfectamente con las corrutinas de Kotlin.



Ejemplo: análisis de una pá

Recommendations