GetElementById renvoie des nœuds incorrects

c# html-agility-pack

Question

J'ai rencontré un petit problème (je ne sais pas si j'ai commis une erreur ou s'il s'agit d'un bug) lors de l'analyse de cette page.

Je suis en train d'obtenir toutes les a étiquette disponible dans ce tableau:

entrez la description de l'image ici

donc pour y parvenir, j'ai écrit ce code:

`var d = doc.GetElementbyId("odds-data-table");
HtmlNodeCollection listItems = d.SelectNodes("//a");`

en particulier d contient la structure de table que je veux:

entrez la description de l'image ici

mais la variable listItems ne contient pas le lien de la table mais de toute la page html, ce qui est assez étrange. J'ai essayé différents cas:

d.SelectNodes("a") : return null
d.SelectNodes("//a") : return all the link of the page 
d.SelectNodes("/a") : return null

Qu'est-ce qui ne va pas? Et je voudrais aussi demander quel type de plugin ou de système avez-vous utilisé pour la documentation HtmlAgilityPack, est vraiment magnifique, merci.

Réponse acceptée

Vous devez lire la propriété Attributes pour chacun de vos HtmlNode partir de votre HtmlNodeCollection comme

HtmlDocument doc = new HtmlDocument();
var d = doc.GetElementbyId("odds-data-table");
HtmlNodeCollection listItems = d.SelectNodes(".//a");

//This list contains all your href values
List<string> hrefs = new List<string>();
foreach (var item in listItems)
{
      var href = item.Attributes["href"].Value;
      hrefs.Add(href);
}



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