HtmlAgilityPack pour C# (.NET) : guide complet avec exemples
1. Qu'est-ce que HtmlAgilityPack et pourquoi l'utiliser ?
HtmlAgilityPack est une bibliothèque puissante pour le parsing de documents HTML dans l'écosystème .NET (C#, VB.NET, F#). Elle offre aux développeurs une API pratique pour naviguer, rechercher, extraire et modifier du code HTML. Contrairement aux analyseurs XML standards, HtmlAgilityPack est spécialement conçue pour gérer le HTML "imparfait" que l'on rencontre souvent sur le Web réel : balises non fermées, attributs incorrects, erreurs d'imbrication, etc. La bibliothèque corrige automatiquement ces défauts pour créer un arbre DOM valide.
Pourquoi l'utiliser ? Les principaux cas d'usage incluent : le web scraping (extraction de données depuis des sites web), l'automatisation de tests d'interfaces web, la migration de contenu entre CMS, l'analyse de rapports HTML, le nettoyage et la normalisation de code HTML, ainsi que la création de générateurs HTML personnalisés. Grâce à la prise en charge de XPath et des sélecteurs CSS (via une extension), la bibliothèque permet de sélectionner les éléments souhaités de manière flexible et précise.
HtmlAgilityPack est activement maintenue par la communauté, dispose d'un code source ouvert et est compatible avec .NET Framework 4.5+, .NET Core 2.0+, .NET 5/6/7/8, ainsi qu'avec Xamarin et Unity. Cela en fait un outil universel pour tout développeur .NET travaillant avec du HTML.
2. Installation
L'installation de la bibliothèque se fait via le gestionnaire de paquets NuGet. Exécutez l'une des commandes suivantes dans la console du gestionnaire de paquets (Package Manager Console) ou dans le terminal .NET CLI :
// Via .NET CLI
dotnet add package HtmlAgilityPack
// Via Package Manager Console
Install-Package HtmlAgilityPack
// Ou via l'interface NuGet : recherchez "HtmlAgilityPack" et installez la dernière version stable
Après l'installation, ajoutez la directive using au début de votre fichier :
using HtmlAgilityPack;
3. Démarrage rapide — exemple minimal fonctionnel
Examinons un exemple simple : chargeons une chaîne HTML, trouvons tous les liens et affichons leur texte et leur URL.
using System;
using HtmlAgilityPack;
class Program
{
static void Main()
{
// 1. Créer un document HTML
var htmlDoc = new HtmlDocument();
// 2. Charger le HTML (en pratique, cela peut venir d'un fichier ou du web)
string html = @"
";
htmlDoc.LoadHtml(html);
// 3. Sélectionner toutes les balises <a> avec XPath
var links = htmlDoc.DocumentNode.SelectNodes("//a");
// 4. Parcourir chaque lien et afficher le texte et l'attribut href
if (links != null)
{
foreach (var link in links)
{
string text = link.InnerText.Trim();
string href = link.GetAttributeValue("href", "");
Console.WriteLine($"Texte : {text}, URL : {href}");
}
}
}
}
Résultat de l'exécution :
Texte : Example, URL : https://example.com
Texte : PythonLib, URL : https://pythonlib.fr
4. Classes et méthodes principales
Voici les classes et méthodes clés de HtmlAgilityPack avec des descriptions détaillées et des exemples.
4.1. HtmlDocument — la classe principale pour manipuler le document
Signature : public class HtmlDocument
Description : Représente un document HTML complet. Permet de charger du HTML depuis une chaîne, un fichier ou un flux, ainsi que d'effectuer des recherches et des m
Aussi dans la bibliothèque
Frameworks CLI pour TypeScript : aperçu complet et exemples d'utilisation
Configuration des applications TypeScript : bibliothèques et approches
Hyper pour Rust : guide complet avec exemples
Création d'applications CLI en TypeScript : aperçu des frameworks et outils
Respect/Validation PHP : guide complet avec exemples