Parsing HTML en Java : présentation des bibliothèques et exemples pratiques
Le parsing HTML (extraction de données à partir de pages web) est l'une des tâches clés du développement moderne. Java fournit des outils puissants à cet effet. Dans cet article, nous allons examiner trois bibliothèques populaires : Jsoup, HtmlUnit et Apache Tika. Vous apprendrez comment les installer, quelles tâches elles résolvent, et vous verrez des exemples de code fonctionnels.
Pourquoi le parsing HTML est-il nécessaire ?
Le parsing HTML est utilisé pour :
- Collecter des données à partir de sites web (prix, actualités, contacts).
- Tester des applications web (extraire des éléments d'interface).
- Automatiser des opérations routinières (remplir des formulaires, vérifier des liens).
- Analyser la structure SEO des sites.
1. Jsoup — le parseur HTML le plus populaire pour Java
Jsoup est une bibliothèque légère et intuitive pour travailler avec HTML. Elle peut charger des pages, les parser, et extraire des données à l'aide de sélecteurs CSS et de méthodes similaires à jQuery. Jsoup corrige automatiquement le balisage incorrect, ce qui la rend idéale pour le parsing de sites réels.
Installation (Maven)
<dependency> <groupId>org.jsoup</groupId> <artifactId>jsoup</artifactId> <version>1.17.2</version></dependency>Exemple : extraction des titres de toutes les actualités
Supposons que nous devions obtenir tous les titres d'articles d'un portail d'actualités. Utilisons le sélecteur CSS h2.news-title.
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 { // Charger la page HTML Document doc = Jsoup.connect("https://example.com/news") .userAgent("Mozilla/5.0") .timeout(5000) .get();
// Extraire tous les éléments h2 avec la classe "news-title" Elements titles = doc.select("h2.news-title");
// Afficher le texte de chaque titre for (var title : titles) { System.out.println(title.text()); } }}Caractéristiques de Jsoup :
- Fonctionne sans navigateur, uniquement avec des requêtes HTTP.
- Prise en charge des sélecteurs CSS (comme dans jQuery).
- Possibilité de manipuler le DOM (ajout, suppression d'éléments).
- Ne peut pas exécuter JavaScript.
2. HtmlUnit — parsing avec prise en charge de JavaScript
HtmlUnit est un émulateur de navigateur en Java. Il ne se contente pas de parser le HTML, il traite complètement la page : exécute JavaScript, charge le CSS, gère les requêtes AJAX. Idéal pour les sites SPA modernes (React, Angular).
Installation (Maven)
<dependency> <groupId>net.sourceforge.htmlunit</groupId> <artifactId>htmlunit</artifactId> <version>2.70.0</version></dependency>Exemple : récupération de données après le chargement de JavaScript
Supposons qu'il y ait sur la page un bloc dynamique qui apparaît 2 secondes après le chargement. HtmlUnit attendra son apparition.
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ésactiver le CSS et la journalisation pour la vitesse webClient.getOptions().setCssEnabled(false); webClient.getOptions().setJavaScriptEnabled(true);
// Charger la page HtmlPage page = webClient.getPage("https://example.com/dynamic");
Aussi dans la bibliothèque
Mise en cache en C# (.NET) : Redis, MemoryCache et autres solutions
Envoi de SMS en PHP : Bibliothèques API pour l'intégration
Génération de rapports PDF en Go : aperçu des bibliothèques et exemples de code
Travail avec les images en TypeScript : bibliothèques, outils et exemples de code