Parsing HTML en Java : Jsoup, HtmlUnit et autres outils

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

Recommendations