Cas d’usage

I. Préparation de l’environnement

1. Modes de référence

Deux approches principales :

  1. Ancienne méthode : importer manuellement HtmlAgilityPack.dll
  2. Méthode recommandée : installation via le paquet NuGet
Install-Package HtmlAgilityPack
2. Classes de base fréquemment utilisées
Nom de la classeRôle
HtmlDocumentConteneur du document HTML, chargé de lire le code source HTML
HtmlWebClasse de requête réseau, récupère directement le HTML d’une URL
HtmlNodeNoeud DOM HTML individuel (balises div/a/p…)
HtmlNodeCollectionCollection 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
  1. 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)
  1. 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 retour HtmlNode
  • SelectNodes("XPath"):renvoie tous les nœuds correspondants, type de retour HtmlNodeCollection
  • 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 interne
  • GetAttributeValue("NomAttribut","ValeurParDéfaut"):lecture sécurisée des attributs de balise

Cas d’usage

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *