Sto cercando di usare HtmlAgilityPack per estrarre tutti i link da una pagina che sono contenuti in un div dichiarato come <div class='content'>
Tuttavia, quando uso il codice qui sotto ho semplicemente ottenuto TUTTI i link sull'intera pagina . Questo non ha senso per me dal momento che sto chiamando SelectNodes dal sub-nodo che ho selezionato in precedenza (che quando visualizzato nel debugger mostra solo l'HTML da quel div specifico). Quindi, è come se tornasse al nodo root ogni volta che chiamo SelectNodes. Il codice che uso è qui sotto:
HtmlWeb hw = new HtmlWeb();
HtmlDocument doc = hw.Load(@"http://example.com");
HtmlNode node = doc.DocumentNode.SelectSingleNode("//div[@class='content']");
foreach(HtmlNode link in node.SelectNodes("//a[@href]"))
{
Console.WriteLine(link.Value);
}
È questo il comportamento previsto? E se sì, come faccio a fare ciò che mi aspetto?
Questo funzionerà:
node.SelectNodes("a[@href]")
Inoltre, puoi farlo in un singolo selettore:
doc.DocumentNode.SelectSingleNode("//div[@class='content']//a[@href]")
Inoltre, nota che link.Value
non è definito per HtmlNode
, quindi il tuo codice non viene compilato.