Análisis de HTML en Kotlin: revisión completa de herramientas y bibliotecas
Kotlin es un lenguaje de programación moderno que funciona en JVM, Android y en el navegador. Gracias a la compatibilidad con Java y a su potente biblioteca estándar, Kotlin ofrece varias formas eficientes de analizar HTML. En este artículo, revisaremos las principales bibliotecas para el análisis de HTML en Kotlin, sus características y proporcionaremos ejemplos prácticos de código.
1. Jsoup — analizador HTML universal para Kotlin
Jsoup es la biblioteca más popular para analizar HTML en JVM. Funciona excelentemente con Kotlin gracias a su total compatibilidad con Java. Jsoup permite cargar HTML desde una URL, archivo o cadena, y luego extraer datos usando selectores CSS y navegación DOM.
Instalación de Jsoup en un proyecto Kotlin
Agregue la dependencia en build.gradle.kts:
dependencies { implementation("org.jsoup:jsoup:1.17.2")}Ejemplo de análisis de HTML con Jsoup
import org.jsoup.Jsoupimport org.jsoup.nodes.Document
fun main() { val url = "https://example.com" val doc: Document = Jsoup.connect(url).get() val title = doc.title() println("Título de la página: $title") // Extraemos todos los enlaces val links = doc.select("a[href]") links.forEach { link -> println("Enlace: ${link.attr("abs:href")} — ${link.text()}") } // Análisis desde una cadena val html = "<div class='content'>¡Hola, Kotlin!</div>" val parsed = Jsoup.parse(html) val text = parsed.select(".content").text() println("Texto del HTML: $text")}2. Ktor Client + kotlinx.html — enfoque nativo de Kotlin
Para proyectos que usan Ktor como cliente HTTP, una excelente opción es la combinación de ktor-client y kotlinx.html. El primero se encarga de descargar las páginas, el segundo de analizar el HTML en una estructura DOM tipada.
Dependencias para Ktor y kotlinx.html
dependencies { implementation("io.ktor:ktor-client-core:2.3.7") implementation("io.ktor:ktor-client-cio:2.3.7") implementation("org.jetbrains.kotlinx:kotlinx-html-jvm:0.11.0")}Ejemplo de análisis con Ktor y kotlinx.html
import io.ktor.client.*import io.ktor.client.request.*import io.ktor.client.statement.*import kotlinx.html.*import kotlinx.html.parser.*
suspend fun parseHtmlWithKtor() { val client = HttpClient() val response: HttpResponse = client.get("https://example.com") val htmlContent = response.bodyAsText() val document = parseHtml(htmlContent) val title = document.head?.title ?: "Sin título" println("Título: $title") // Extraemos todos los párrafos document.body?.allElements?.filterIsInstance<P>()?.forEach { p -> println("Párrafo: ${p.text}") } client.close()}3. Comparación de bibliotecas para el análisis de HTML en Kotlin
La elección de la herramienta depende de la tarea específica. Estos son los criterios principales:
- Jsoup — la mejor opción para análisis complejos con selectores CSS. Adecuado para scraping de datos, extracción de tablas, formularios y elementos multimedia.
- Ktor + kotlinx.html — ideal para proyectos en Ktor que requieren un análisis ligero sin dependencias adicionales. Funciona de forma asíncrona.
- HtmlCleaner — otra biblioteca Java, bien compatible con Kotlin. Útil para limpiar HTML "sucio".
- OkHttp + Jsoup — combinación para un ajuste fino de las solicitudes HTTP con un potente análisis.
4. Técnicas avanzadas de análisis en Kotlin
Extracción de datos con selectores CSS (Jsoup)
val doc = Jsoup.connect("https://news.ycombinator.com").get()val stories = doc.select("tr.athing")stories.forEach { story -> También en la biblioteca
Geolocalización y mapas en JavaScript (Node.js): bibliotecas y herramientas
Monitoreo de aplicaciones Node.js: Herramientas y bibliotecas
Trabajo con archivos ZIP en Java: guía completa de java.util.zip
Limitación de tasa en C++: bibliotecas y herramientas para control de solicitudes
Multer para JavaScript (Node.js): guía completa con ejemplos