GetElementById restituisce nodi errati

c# html-agility-pack

Domanda

Ho riscontrato un piccolo problema (non so se ho fatto un errore o se c'è un bug) mentre analizzo questa pagina.

Sto cercando di ottenere tutte le a tag disponibili in questa tabella:

inserisci la descrizione dell'immagine qui

quindi per raggiungere questo, ho scritto questo codice:

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

in particolare d contiene la struttura della tabella che voglio:

inserisci la descrizione dell'immagine qui

ma la variabile listItems non contiene il link della tabella ma dell'intera pagina html, e questo è piuttosto strano. Ho provato un caso diverso:

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

che c'è? E vorrei chiedere anche quale tipo di plugin o sistema hai usato per la documentazione di HtmlAgilityPack, è davvero sorprendente, grazie.

Risposta accettata

Devi leggere la proprietà Attributes per ognuno dei tuoi HtmlNode dal tuo HtmlNodeCollection come

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);
}


Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché