Parsing de HTML em Kotlin: visão completa de ferramentas e bibliotecas
Kotlin é uma linguagem de programação moderna, que funciona na JVM, Android e no navegador. Graças à compatibilidade com Java e à poderosa biblioteca padrão, Kotlin oferece várias maneiras eficientes de fazer parsing de HTML. Neste artigo, vamos explorar as principais bibliotecas para parsing de HTML em Kotlin, suas características e apresentar exemplos práticos de código.
1. Jsoup — parser de HTML universal para Kotlin
Jsoup é a biblioteca mais popular para parsing de HTML na JVM. Ela funciona perfeitamente com Kotlin devido à total compatibilidade com Java. O Jsoup permite carregar HTML a partir de URL, arquivo ou string, e então extrair dados usando seletores CSS e navegação DOM.
Instalação do Jsoup em projeto Kotlin
Adicione a dependência no build.gradle.kts:
dependencies { implementation("org.jsoup:jsoup:1.17.2")}Exemplo de parsing de HTML com 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 da página: $title") // Extrai todos os links val links = doc.select("a[href]") links.forEach { link -> println("Link: ${link.attr("abs:href")} — ${link.text()}") } // Parsing a partir de string val html = "<div class='content'>Olá, Kotlin!</div>" val parsed = Jsoup.parse(html) val text = parsed.select(".content").text() println("Texto do HTML: $text")}2. Ktor Client + kotlinx.html — abordagem nativa Kotlin
Para projetos que usam Ktor como cliente HTTP, uma excelente escolha é a combinação de ktor-client e kotlinx.html. O primeiro é responsável por carregar as páginas, o segundo por fazer o parsing do HTML em uma estrutura DOM tipada.
Dependências para Ktor e 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")}Exemplo de parsing com Ktor e 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 ?: "Sem título" println("Título: $title") // Extrai todos os parágrafos document.body?.allElements?.filterIsInstance<P>()?.forEach { p -> println("Parágrafo: ${p.text}") } client.close()}3. Comparação de bibliotecas para parsing de HTML em Kotlin
A escolha da ferramenta depende da tarefa específica. Aqui estão os principais critérios:
- Jsoup — a melhor escolha para parsing complexo com seletores CSS. Adequado para scraping de dados, extração de tabelas, formulários e elementos de mídia.
- Ktor + kotlinx.html — ideal para projetos em Ktor que exigem parsing leve sem dependências extras. Funciona de forma assíncrona.
- HtmlCleaner — outra biblioteca Java, bem compatível com Kotlin. Útil para limpar HTML "sujo".
- OkHttp + Jsoup — combinação para ajuste fino de requisições HTTP com parsing poderoso.
4. Técnicas avançadas de parsing em Kotlin
Extração de dados com seletores CSS (Jsoup)
val doc = Jsoup.connect("https://news.ycombinator.com").get()val stories = doc.select("tr.athing")stories.forEach { story -> Também na biblioteca
Container de Injeção de Dependência em C++: biblioteca Fruit para injeção de dependências
Burn para Rust: guia completo com exemplos práticos