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 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 ->                    

Recommendations