2010-08-08 5 views
0

J'essaie d'obtenir tous les liens d'un lien lorsque sa classe parente est name_of_box. J'ai écrit ci-dessous mais je n'ai rien. Comment puis-je faire cela? Avec je crois que je css peux le sélectionner avec .name_of_box aObtenez '.name a' avec le pack d'agilité html?

var ls = htmldoc.DocumentNode.Elements("//div[@class='name_of_box']//a[@href]"); 

Répondre

0

HtmlAgilityPack n'a pas la possibilité d'interroger directement une valeur d'attribut. Vous devez faire une boucle sur la liste des nœuds d'ancrage. Voici une façon:

var ls = new List<string>(); 
var nodes = htmldoc.DocumentNode.SelectNodes("//div[@class='name_of_box']//a"); 
nodes.ToList().ForEach(a => ls.Add(a.GetAttributeValue("href", ""))); 

Mais il y a un experimental build vous pouvez regarder, qui vous permettra de requête directement un attribut.

0

Cela peut être facilement fait avec fizzler - une bibliothèque .NET pour sélectionner des éléments d'une arborescence de nœuds basée sur un sélecteur CSS. L'implémentation par défaut est basée sur HTMLAgilityPack et sélectionne des documents HTML.

Voir:

var ls = htmldoc.DocumentNode.QuerySelectorAll(".name_of_box a");