Parsing de HTML em Kotlin: bibliotecas e exemplos de código

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

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

Recommendations