Analyse du pack d'agilité HTML

asp.net-mvc html html-agility-pack

Question

Je suis très nouveau pour HTML Agility Pack. J'essaie de trouver de la documentation, mais j'ai quelques problèmes.

J'ai le code suivant:

<div class="person">
<a href="blah1.html">Person 1</a>
</div>
<div class="person">
<a href="blah2.html">Person 2</a>
</div>
<div class="person">
<a href="blah3.html">Person 3</a>
</div>
<div class="person">
<a href="blah4.html">Person 4</a>
</div>

À l'aide de l'analyseur, comment puis-je récupérer uniquement des liens dans une div ayant une personne de la classe?

Je vous remercie!

Réponse acceptée

Avec Html Agility Pack (disponible sur NuGet):

HtmlDocument html = new HtmlDocument();
html.Load(path_to_html); // or html.LoadHtml(html_string)           
var links = html.DocumentNode.SelectNodes("//div[@class='person']/a")
                .Select(n => n.GetAttributeValue("href", null));

Résultats:

HtmlDocument html = new HtmlDocument();
html.Load(path_to_html); // or html.LoadHtml(html_string)           
var links = html.DocumentNode.SelectNodes("//div[@class='person']/a")
                .Select(n => n.GetAttributeValue("href", null));

Réponse populaire

Le XPath suivant correspond à votre description:

//div[@class='person']/a/@href

Il renvoie les href attributs des premiers a des éléments qui se trouvent directement sous la div élément avec la class attribut est égale à person .

Si vous êtes plus à l'aise avec les sélecteurs de style jQuery, envisagez d'utiliser CsQuery au lieu du pack HTML Agility.




Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi