Parsing HTML en Kotlin : bibliothèques et exemples de code

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

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

Recommendations