Parsing HTML en Kotlin : aperçu complet des outils et bibliothèques
Kotlin est un langage de programmation moderne fonctionnant sur JVM, Android et dans le navigateur. Grâce à sa compatibilité avec Java et à sa puissante bibliothèque standard, Kotlin propose plusieurs méthodes efficaces pour le parsing HTML. Dans cet article, nous examinerons les principales bibliothèques pour le parsing HTML en Kotlin, leurs caractéristiques et fournirons des exemples pratiques de code.
1. Jsoup — un parseur HTML universel pour Kotlin
Jsoup est la bibliothèque la plus populaire pour le parsing HTML sur JVM. Elle fonctionne parfaitement avec Kotlin grâce à sa compatibilité totale avec Java. Jsoup permet de charger du HTML depuis une URL, un fichier ou une chaîne de caractères, puis d'extraire des données à l'aide de sélecteurs CSS et de la navigation DOM.
Installation de Jsoup dans un projet Kotlin
Ajoutez la dépendance dans build.gradle.kts :
dependencies { implementation("org.jsoup:jsoup:1.17.2")}Exemple de parsing HTML avec 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("Titre de la page : $title") // Extraction de tous les liens val links = doc.select("a[href]") links.forEach { link -> println("Lien : ${link.attr("abs:href")} — ${link.text()}") } // Parsing depuis une chaîne val html = "<div class='content'>Bonjour, Kotlin !</div>" val parsed = Jsoup.parse(html) val text = parsed.select(".content").text() println("Texte du HTML : $text")}2. Ktor Client + kotlinx.html — une approche native Kotlin
Pour les projets utilisant Ktor comme client HTTP, la combinaison ktor-client et kotlinx.html est un excellent choix. Le premier est responsable du chargement des pages, le second du parsing HTML en une structure DOM typée.
Dépendances pour Ktor et 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")}Exemple de parsing avec Ktor et 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 ?: "Sans titre" println("Titre : $title") // Extraction de tous les paragraphes document.body?.allElements?.filterIsInstance<P>()?.forEach { p -> println("Paragraphe : ${p.text}") } client.close()}3. Comparaison des bibliothèques pour le parsing HTML en Kotlin
Le choix de l'outil dépend de la tâche spécifique. Voici les critères principaux :
- Jsoup — le meilleur choix pour un parsing complexe avec des sélecteurs CSS. Adapté au scraping de données, à l'extraction de tableaux, formulaires et éléments multimédia.
- Ktor + kotlinx.html — idéal pour les projets Ktor nécessitant un parsing léger sans dépendances superflues. Fonctionne de manière asynchrone.
- HtmlCleaner — une autre bibliothèque Java, bien compatible avec Kotlin. Utile pour nettoyer du HTML "sale".
- OkHttp + Jsoup — une combinaison pour un réglage fin des requêtes HTTP avec un parsing puissant.
4. Techniques avancées de parsing en Kotlin
Extraction de données avec des sélecteurs CSS (Jsoup)
val doc = Jsoup.connect("https://news.ycombinator.com").get()val stories = doc.select("tr.athing")stories.forEach { story ->