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 geral das bibliotecas e exemplos práticos

Kotlin é uma linguagem multiplataforma moderna, amplamente utilizada para desenvolvimento de aplicações server-side, aplicativos Android e ferramentas de automação. Uma das tarefas comuns é o parsing de HTML — extrair dados de páginas web, trabalhar com a árvore DOM ou gerar templates HTML. Neste artigo, vamos explorar as principais bibliotecas para parsing de HTML em Kotlin, suas características e fornecer exemplos de código funcionais.



Por que o parsing de HTML em Kotlin é necessário?

O parsing de HTML é necessário em cenários como:

  • Coleta de dados de sites (web scraping).
  • Automação de testes de interfaces web.
  • Geração de relatórios HTML ou templates de e-mail.
  • Processamento e análise de conteúdo obtido de APIs ou arquivos.

Graças à compatibilidade com Java e suas próprias construções DSL, o Kotlin oferece tanto bibliotecas Java consolidadas quanto soluções nativas.



1. Jsoup — parser HTML/XML universal

Jsoup é a biblioteca mais popular para parsing de HTML no ecossistema JVM. Ela fornece uma API conveniente para carregar, analisar e manipular documentos HTML, suporta seletores CSS e métodos semelhantes ao jQuery. Para Kotlin, o Jsoup é excelente devido à total compatibilidade com Java e à possibilidade de usar extensões Kotlin.



Instalação (Gradle)

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


Exemplo: extraindo títulos de artigos de um blog

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

fun main() { // Carrega o documento HTML a partir de uma URL val doc: Document = Jsoup.connect("https://example.com/blog").get()

// Extrai todos os títulos h2 com a classe "post-title" val titles = doc.select("h2.post-title")

// Exibe o texto de cada título titles.forEach { title -> println(title.text()) }

// Exemplo usando seletor CSS: todos os links dentro de artigos val links = doc.select("article a[href]") links.forEach { link -> println("${link.text()} -> ${link.attr("href")}") }}

O Jsoup também permite analisar HTML a partir de string, arquivo ou InputStream, além de limpar HTML de elementos potencialmente perigosos (proteção XSS).



2. kotlinx.html — DSL type-safe para trabalhar com HTML

kotlinx.html é a biblioteca oficial da JetBrains, projetada para gerar código HTML usando uma DSL type-safe. Diferente do Jsoup, ela não analisa HTML existente, mas o cria. No entanto, pode ser combinada com o Jsoup para um ciclo completo: parsing → modificação → geração.



Instalação (Gradle)

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


Exemplo: gerando uma página HTML

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

fun main() { val htmlContent = createHTML().html { head { title("Exemplo de página") meta(charset = "UTF-8") } body { h1 { +"Olá, Kotlin!" } p { +"Este é um parágrafo gerado com " b { +"kotlinx.html" } } ul { li { +"Item 1" } li { +"Item 2" } li { +"Item 3" } } } } println(htmlContent)}

Essa abordagem é especialmente útil para criar relatórios, templates de e-mail ou páginas dinâmicas no servidor (Ktor).



3. Ktor Client + Jsoup — para parsing com requisições HTTP

Se for necessário realizar requisições HTTP complexas (com cookies, cabeçalhos, autenticação) antes do parsing, é conveniente usar o Ktor Client em conjunto com o Jsoup. Ktor é um cliente HTTP assíncrono que se integra perfeitamente com as coroutines do Kotlin.



Exemplo: parsing de página

Recommendations