Parsing HTML en Kotlin : aperçu des bibliothèques et exemples pratiques
Kotlin est un langage moderne multiplateforme, activement utilisé pour le développement d'applications serveur, d'applications Android et d'outils d'automatisation. L'une des tâches fréquentes est le parsing HTML — l'extraction de données à partir de pages web, le travail avec l'arbre DOM ou la génération de modèles HTML. Dans cet article, nous examinerons les principales bibliothèques pour le parsing HTML en Kotlin, leurs caractéristiques et fournirons des exemples de code fonctionnels.
Pourquoi le parsing HTML en Kotlin est-il nécessaire ?
Le parsing HTML est requis dans des scénarios tels que :
- La collecte de données à partir de sites web (web scraping).
- L'automatisation des tests d'interfaces web.
- La génération de rapports HTML ou de modèles d'e-mails.
- Le traitement et l'analyse de contenu obtenu via des API ou des fichiers.
Grâce à sa compatibilité avec Java et ses propres constructions DSL, Kotlin propose à la fois des bibliothèques Java éprouvées et des solutions natives.
1. Jsoup — analyseur HTML/XML universel
Jsoup est la bibliothèque la plus populaire pour le parsing HTML dans l'écosystème JVM. Elle offre une API pratique pour charger, analyser et manipuler des documents HTML, prend en charge les sélecteurs CSS et les méthodes de type jQuery. Pour Kotlin, Jsoup est parfaitement adapté grâce à sa compatibilité totale avec Java et la possibilité d'utiliser des extensions Kotlin.
Installation (Gradle)
dependencies { implementation("org.jsoup:jsoup:1.17.2")}Exemple : extraction des titres d'articles d'un blog
import org.jsoup.Jsoupimport org.jsoup.nodes.Document
fun main() { // Charge le document HTML à partir d'une URL val doc: Document = Jsoup.connect("https://example.com/blog").get()
// Extrait tous les titres h2 avec la classe "post-title" val titles = doc.select("h2.post-title")
// Affiche le texte de chaque titre titles.forEach { title -> println(title.text()) }
// Exemple avec un sélecteur CSS : tous les liens dans les articles val links = doc.select("article a[href]") links.forEach { link -> println("${link.text()} -> ${link.attr("href")}") }}Jsoup permet également d'analyser du HTML à partir d'une chaîne, d'un fichier ou d'un InputStream, ainsi que de nettoyer le HTML des éléments potentiellement dangereux (protection XSS).
2. kotlinx.html — DSL typé pour travailler avec HTML
kotlinx.html est la bibliothèque officielle de JetBrains, conçue pour générer du code HTML à l'aide d'un DSL typé. Contrairement à Jsoup, elle n'analyse pas le HTML existant, mais le crée. Cependant, elle peut être combinée avec Jsoup pour un cycle complet : parsing → modification → génération.
Installation (Gradle)
dependencies { implementation("org.jetbrains.kotlinx:kotlinx-html-jvm:0.11.0")}Exemple : génération d'une page HTML
import kotlinx.html.*import kotlinx.html.stream.createHTML
fun main() { val htmlContent = createHTML().html { head { title("Exemple de page") meta(charset = "UTF-8") } body { h1 { +"Bonjour, Kotlin !" } p { +"Ceci est un paragraphe généré avec " b { +"kotlinx.html" } } ul { li { +"Point 1" } li { +"Point 2" } li { +"Point 3" } } } } println(htmlContent)}Cette approche est particulièrement utile pour créer des rapports, des modèles d'e-mails ou des pages dynamiques côté serveur (Ktor).
3. Ktor Client + Jsoup — pour le parsing avec requêtes HTTP
Si vous devez effectuer des requêtes HTTP complexes (avec cookies, en-têtes, authentification) avant le parsing, il est pratique d'utiliser Ktor Client en combinaison avec Jsoup. Ktor est un client HTTP asynchrone qui s'intègre parfaitement avec les coroutines Kotlin.
Exemple : parsing d'une page
Aussi dans la bibliothèque
Client OAuth pour Rust : bibliothèque oauth2
Travailler avec les ZIP/archives en Rust : bibliothèque zip et guide complet
Parsing HTML en TypeScript : bibliothèques, outils et exemples
Travailler avec Apache Kafka en Swift (iOS/macOS) : bibliothèques et exemples
Configuration d'applications Swift : la bibliothèque SwiftyConfig