Récupérer le contenu du document

Récupérer l’objet document

1. Créer l’objet document

HtmlDocument document = new HtmlDocument();Langage du code : JavaScript (javascript)

2. Deux modes de chargement

1)Charger une chaîne HTML

document.LoadHtml(htmlString);Langage du code : JavaScript (javascript)

2)Charger un fichier HTML local (préciser l’encodage pour éviter les caractères corrompus)

document.Load(@"c:/news.html", Encoding.UTF8);Langage du code : JavaScript (javascript)

Pour les chemins Windows, préférez le préfixe @ pour désactiver l’échappement ; c://news.html dans le support de cours n’est qu’un exemple syntaxique.

3. Récupérer le nœud racine

HtmlNode rootNode = document.DocumentNode;Langage du code : JavaScript (javascript)

Toutes les requêtes xpath s’exécutent sur la base de rootNode.

Opérations sur les nœuds

1. Créer un nouveau nœud à partir du HTML d’un nœud

HtmlNode newNode = HtmlNode.CreateNode(newsNode.OuterHtml);
  • OuterHtml:inclut sa propre balise ainsi que tout le HTML interne
  • utilisé pour dupliquer des nœuds ou analyser un fragment HTML isolé

2. Interroger des nœuds

  • SelectSingleNode("XPath"):renvoie le premier nœud correspondant, type retour HtmlNode
HtmlNode childNode = itemNode.SelectSingleNode("//div[1]");Langage du code : JavaScript (javascript)
  • SelectNodes("XPath"):renvoie l’ensemble des nœuds correspondants, type retour HtmlNodeCollection

3. Lire texte et attributs

  1. Récupérer le texte brut d’un nœud
string text = itemNode.InnerText;
  1. Lire un attribut de balise (écriture basique)
string href = itemNode.Attributes["href"].Value;Langage du code : JavaScript (javascript)

Risque : si la balise ne possède pas l’attribut href, l’accès direct Attributes["href"] renvoie null et provoque une erreur d’exécution.

Écriture sécurisée recommandée :

string href = itemNode.GetAttributeValue("href", "");Langage du code : JavaScript (javascript)

4. Exemple complet : parcourir une liste d’actualités

foreach (HtmlNode item in newsList)
{
    string title = item.InnerText;
    string href = item.Attributes["href"].Value;
}Langage du code : PHP (php)

Compléments

  1. Gestion des valeurs null
    SelectNodes() retourne null quand aucun nœud ne correspond. Vérifiez‑le avant toute boucle foreach :
if(newsList != null)
{
    foreach(var item in newsList){ ... }
}Langage du code : PHP (php)
  1. Différence InnerText / InnerHtml / OuterHtml
  • InnerText:extrait uniquement le texte, supprime toutes les balises
  • InnerHtml:HTML interne du nœud, sans sa propre balise
  • OuterHtml:sa propre balise + tout le HTML interne
  1. Astuce XPath
    //div effectue une recherche globale sur tous les div ; sans //, on ne cible que les enfants directs.

Exemple fonctionnel complet

using HtmlAgilityPack;
using System.Text;

//1.Initialiser le document
HtmlDocument document = new HtmlDocument();
document.Load("news.htm", Encoding.UTF8);
HtmlNode rootNode = document.DocumentNode;

//2.Récupérer en masse les liens des actualités
HtmlNodeCollection newsList = rootNode.SelectNodes(@"//div[@class='blk122']/a");

if(newsList != null)
{
    foreach (HtmlNode item in newsList)
    {
        string title = item.InnerText.Trim();
        string link = item.GetAttributeValue("href", "");
        Console.WriteLine($"Titre:{title} Lien:{link}");
    }
}Langage du code : JavaScript (javascript)

Récupérer le contenu du document

Previous:

Laisser un commentaire

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