I. Préparation de l’environnement
1. Modes de référence
Deux approches principales :
- Ancienne méthode : importer manuellement
HtmlAgilityPack.dll - Méthode recommandée : installation via le paquet NuGet
Install-Package HtmlAgilityPack
2. Classes de base fréquemment utilisées
| Nom de la classe | Rôle |
|---|---|
HtmlDocument | Conteneur du document HTML, chargé de lire le code source HTML |
HtmlWeb | Classe de requête réseau, récupère directement le HTML d’une URL |
HtmlNode | Noeud DOM HTML individuel (balises div/a/p…) |
HtmlNodeCollection | Collection de HtmlNode pour stocker plusieurs résultats de requête |
II. Deux façons de charger du HTML
Les deux méthodes produisent un objet HtmlDocument
1 : Charger un fichier local / chaîne HTML
- Charger un fichier HTML local
using HtmlAgilityPack;
using System.Text;
HtmlDocument document = new HtmlDocument();
// Charger fichier local avec encodage spécifié
document.Load("news.htm", Encoding.UTF8);Langage du code : JavaScript (javascript)
- Charger une chaîne de caractères HTML
string htmlStr = "<html>...</html>";
document.LoadHtml(htmlStr);Langage du code : HTML, XML (xml)
2 : Charger une page web en ligne
HtmlWeb web = new HtmlWeb();
HtmlDocument doc = web.Load("https://example.com");Langage du code : JavaScript (javascript)
III. Interroger les nœuds
// 1. Instancier l’objet document
HtmlDocument document = new HtmlDocument();
// 2. Lire le fichier html local
document.Load("news.htm", Encoding.UTF8);
// 3. Récupérer le nœud racine du document
HtmlNode rootNode = document.DocumentNode;
// 4. Requête XPath multiple, retourne une collection de nœuds
HtmlNodeCollection newsList = rootNode.SelectNodes(
@"//html/body/div[@class='content']/div/div[@class='left']/div[1]/div[@class='blk12']/div[@class='blk122']/a"
);Langage du code : JavaScript (javascript)
Présentation des méthodes clés
SelectSingleNode("XPath"):renvoie le premier nœud correspondant, type de retourHtmlNodeSelectNodes("XPath"):renvoie tous les nœuds correspondants, type de retourHtmlNodeCollection- Les supports de formation utilisent des chemins absolus complets. En production, privilégiez la recherche relative globale pour simplifier l’XPath et limiter les cassures lors des modifications de page :
//div[@class='blk122']/aLangage du code : JSON / JSON avec commentaires (json)
IV. Exemple : parcourir et extraire du contenu
if(newsList != null)
{
foreach(HtmlNode aNode in newsList)
{
string title = aNode.InnerText; // Récupérer le texte dans la balise
string link = aNode.GetAttributeValue("href",""); // Lire l’attribut href
}
}Langage du code : PHP (php)
V. Aide‑mémoire des propriétés importantes
.InnerText:texte brut à l’intérieur de la balise.InnerHtml:code HTML interne avec balises enfants.OuterHtml:balise courante ainsi que tout son contenu HTML interneGetAttributeValue("NomAttribut","ValeurParDéfaut"):lecture sécurisée des attributs de balise
Cas d’usage
Previous: XPath