Parsing HTML en Java : aperçu des bibliothèques et outils
Le parsing HTML est le processus d'extraction de données structurées à partir de documents HTML. En Java, il existe plusieurs bibliothèques puissantes pour cette tâche, permettant non seulement d'analyser des pages statiques, mais aussi de traiter du contenu dynamique. Dans cet article, nous examinerons trois outils les plus populaires : Jsoup, HtmlUnit et Jericho HTML Parser. Chacun d'eux possède ses propres caractéristiques et domaines d'application.
1. Jsoup — un parser HTML universel
Jsoup est la bibliothèque Java la plus populaire pour travailler avec le HTML. Elle offre une API pratique pour charger, analyser et extraire des données, et prend en charge les sélecteurs CSS ainsi que les manipulations de l'arbre DOM. Jsoup est idéal pour les pages statiques et les tâches simples de web scraping.
Fonctionnalités principales :
- Chargement de HTML depuis une URL, un fichier ou une chaîne de caractères
- Extraction de données à l'aide de sélecteurs CSS
- Nettoyage du HTML des balises indésirables
- Modification du DOM (ajout/suppression d'éléments)
- Correction automatique du HTML invalide
Exemple de code : extraction des titres d'actualités
import org.jsoup.Jsoup;import org.jsoup.nodes.Document;import org.jsoup.select.Elements;
public class JsoupExample { public static void main(String[] args) throws Exception { // Chargement de la page HTML Document doc = Jsoup.connect("https://example.com/news") .userAgent("Mozilla/5.0") .timeout(5000) .get(); // Extraction de tous les titres h2 avec la classe "news-title" Elements titles = doc.select("h2.news-title"); // Affichage du texte de chaque titre titles.forEach(title -> System.out.println(title.text())); }}2. HtmlUnit — parsing avec support JavaScript
HtmlUnit est un navigateur headless en Java qui émule le fonctionnement d'un navigateur web. Contrairement à Jsoup, il exécute du code JavaScript, traite les requêtes AJAX et gère les cookies. C'est un outil indispensable pour le parsing des applications SPA modernes et des sites au contenu dynamique.
Caractéristiques clés :
- Émulation complète du navigateur (Chrome, Firefox, IE)
- Exécution de JavaScript (y compris jQuery et React)
- Prise en charge des formulaires, clics, navigation entre pages
- Gestion des cookies, sessions et redirections
- Support intégré de XPath et des sélecteurs CSS
Exemple de code : attente du chargement du contenu dynamique
import com.gargoylesoftware.htmlunit.WebClient;import com.gargoylesoftware.htmlunit.html.HtmlPage;import com.gargoylesoftware.htmlunit.html.HtmlElement;
public class HtmlUnitExample { public static void main(String[] args) throws Exception { try (WebClient webClient = new WebClient()) { // Désactivation de la journalisation et des timeouts webClient.getOptions().setThrowExceptionOnScriptError(false); webClient.getOptions().setJavaScriptEnabled(true); // Chargement de la page HtmlPage page = webClient.getPage("https://example.com/dynamic"); // Attente de 2 secondes pour l'exécution du JS webClient.waitForBackgroundJavaScript(2000); // Extraction des données via XPath HtmlElement element = page.getFirstByXPath("//div[@class='result']/p"); System.out.println("Résultat : " + element.getTextContent()); } }}3. Jericho HTML Parser — léger et rapide
Jericho HTML Parser est une bibliothèque légère avec un minimum de dépendances. Elle excelle dans l'analyse du HTML invalide et offre un accès de bas niveau à la structure du document.
Aussi dans la bibliothèque
Configuration des applications Swift : bibliothèque SwiftyConfiguration
Proptest Rust : guide complet avec exemples concrets
Jetons JWT en JavaScript (Node.js) : guide complet
Métriques Prometheus dans Node.js : bibliothèque prom-client
Configuration des applications Node.js : meilleures bibliothèques et pratiques