Html Agility Pack C #: l’expression doit correspondre à un ensemble de nœuds

c# html-agility-pack web-scraping

Question

J'utilise Html Agility Pack pour récupérer une page Web. Je veux rassembler tout le texte que je recherche, de la forme suivante:

<li><a href="/deal/map/4087664" class="show-location" title="bla bla" data-address="TEXT I AM LOOKING FOR"></a></li>

J'ai essayé ce code:

var web = new HtmlWeb();
var doc = web.Load(url);

var nodes1 = doc.DocumentNode.SelectNodes("//[@data-address]");
var nodes2 = doc.DocumentNode.SelectNodes("//[@data-address={0}]");

les deux ont lancé une exception: Expression doit être évaluée à un ensemble de nœuds. Comment puis-je corriger mon sélecteur?

Réponse acceptée

Je ne suis en aucun cas un expert XPath, mais je suppose que vous voulez:

// Note the *
var nodes1 = doc.DocumentNode.SelectNodes("//*[@data-address]");

En d'autres termes "tout élément avec un attribut d' data-address "



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