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

Recommendations