Utilisation de HTML Agility Pack pour obtenir du texte à côté de l'image?

c# c#-4.0 html-agility-pack web-scraping

Question

J'ai ce morceau de HTML que j'ai besoin d'analyser si

<p class="feature_list">

<img src="candy.gif" alt="candy" title="candy"/>&nbsp;
                        x 3&nbsp;&nbsp;
<img src="lollies.gif" alt="lollies" title="lollies"/>&nbsp;
                        1&nbsp;&nbsp;
<img src="system.gif" alt="system" title="system"/>&nbsp;

                        x 1&nbsp;&nbsp;
<img src="phone.gif" alt="phone" title="phone"/>&nbsp;
                        x 1&nbsp;&nbsp;
</p>

Comme vous pouvez le voir, il y a une image et ensuite un texte du type "x 3" à côté.

Ce que je veux faire, c'est parcourir chaque image et enregistrer le texte à côté. Cependant, le texte est en dehors de la balise 'img'.

Je me demandais s'il était possible de faire cela avec le pack d'agilité HTML.

Réponse acceptée

Le code suivant:

    HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
    doc.Load(yourHtml);

    foreach (HtmlNode node in doc.DocumentNode.SelectNodes("//img"))
    {
        Console.WriteLine(HtmlEntity.DeEntitize(node.NextSibling.InnerText).Trim());
    }

Est-ce que la sortie:

x 3
1
x 1
x 1

Notez l'utilitaire HtmlEntity qui facilite la gestion des entités HTML (comme &nbsp; ).



Related

Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow