Jsoup pour Java : Guide complet du parsing HTML
1. Qu'est-ce que Jsoup et pourquoi l'utiliser ?
Jsoup est une bibliothèque Java open source puissante et pratique, conçue pour le parsing (analyse), l'extraction de données et la manipulation de documents HTML. Elle offre aux développeurs une API propre et intuitive qui permet de travailler avec HTML aussi facilement qu'avec l'arbre DOM dans un navigateur. Si vous avez déjà dû écrire des expressions régulières pour extraire des données de pages web, vous savez à quel point cette solution peut être fragile et difficile à maintenir. Jsoup résout ce problème en proposant un outil fiable et flexible.
La tâche principale de Jsoup est le parsing HTML. Il peut accepter en entrée une chaîne de caractères, une URL ou un fichier et les transformer en un modèle objet de document (DOM). Ensuite, vous pouvez utiliser des sélecteurs CSS (comme dans jQuery) ou naviguer dans l'arbre DOM pour rechercher et extraire des éléments spécifiques, leurs attributs et leur contenu textuel. De plus, Jsoup peut nettoyer le HTML des éléments potentiellement dangereux (comme les attaques XSS) et modifier le document : ajouter, supprimer ou modifier des balises et leur contenu.
Pourquoi en avez-vous besoin ? Les domaines d'application de Jsoup sont très vastes : de l'écriture de parseurs simples pour la collecte de données (web scraping) et la surveillance des prix, à la création de systèmes complexes d'analyse de contenu, de tests d'applications web et d'intégration avec des CMS. Jsoup est la norme de facto pour travailler avec HTML dans le monde Java, et sa connaissance est indispensable pour tout développeur Java confronté aux technologies web.
2. Installation de Jsoup
Jsoup est distribué sous forme de fichier JAR, mais le plus simple est de l'intégrer via un système de build. Voici les commandes pour Maven et Gradle.
Maven (pom.xml)
<dependency>
<groupId>org.jsoup</groupId>
<artifactId>jsoup</artifactId>
<version>1.17.2</version>
</dependency>
Gradle (build.gradle)
implementation 'org.jsoup:jsoup:1.17.2'
Si vous n'utilisez pas de système de build, téléchargez le fichier JAR depuis le site officiel et ajoutez-le au classpath de votre projet.
3. Démarrage rapide : exemple minimal fonctionnel
Écrivons un programme simple qui charge la page d'accueil de Google et affiche son titre.
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
public class QuickStart {
public static void main(String[] args) throws Exception {
// 1. Charger le document HTML depuis une URL
Document doc = Jsoup.connect("https://www.google.com").get();
// 2. Extraire le titre de la page (contenu de la balise <title>)
String title = doc.title();
// 3. Afficher le résultat
System.out.println("Titre de la page : " + title);
}
}
Ce code effectue une requête HTTP GET vers l'URL spécifiée, parse le HTML reçu et retourne un objet Document. La méthode title() est un moyen pratique d'obtenir le contenu de la balise <title>. Le résultat ressemblera à : Titre de la page : Google.
4. Méthodes et classes principales de Jsoup
Examinons les classes et méthodes clés de la bibliothèque. Tous les exemples supposent que vous avez déjà importé org.jsoup.Jsoup et org.jsoup.nodes.*.
4.1. Jsoup.connect(String url)
Signature : public static Connection connect(String url)
Fonction : Crée une nouvelle connexion HTTP vers l'URL spécifiée. Retourne un objet Connection, qui