Sto provando a utilizzare HtmlAgilityPack per richiamare tutti i collegamenti da una pagina contenuti in un div dichiarato come <div class='content'>
Tuttavia, quando utilizzo il codice riportato di seguito, ottengo semplicemente TUTTI collegamenti su tutta la 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:Selezionare solo gli elementi in un DIV specifico utilizzando HtmlAgilityPack
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 non sembra corretto con XPath, lo so, ma funziona. Vorrei anche confessare che ho usato HtmlAgilityPack per la prima volta proprio ora, per rispondere alla domanda. Non riesco a trovare alcuna documentazione ... – Kobi
per quanto riguarda link.Value, stavo riscrivendo questo dalla memoria ... era prob InnerHtml o qualcosa del genere. Quindi è il // che fa tornare sempre alla radice? Non ho avuto questa impressione dalla documentazione XPath su W3C –
T hat è piuttosto impressionante dalla memoria ... Ad ogni modo, hai ragione - XPath che inizia con '// 'dovrebbe rispettare il suo contesto, per quanto ne so. – Kobi