如何訪問多個內容
HTMLAgilityPack的標籤?

c# html html-agility-pack wpf

我無法在codeplex網站上找到HTMLAgilityPack的文檔。目前我想要做的是訪問亞馬遜網站上的div,並抓取文本信息以便在WPF應用程序中使用。

var getWeb = new HtmlWeb();                     
var doc = getWeb.Load(uri);
HtmlNode ourNode = doc.DocumentNode.SelectSingleNode("//div[@id = 'zg_centerListWrapper']");

這個div包含大約12個其他div,每個div是best sellers類別中的項目。

為了訪問每個人的屬性似乎是艱苦的(我也不完全確定我是如何在第一眼看到的)。那麼我應該使用DocumentNode.SelectNodes()嗎?我將如何實現它?此外,我發現很難相信在這段時間之後沒有HTMLAgilityPack文檔...也許我正在尋找錯誤的地方,因為youtube目前似乎是我最好的來源。

一般承認的答案

實際上, SelectNodes()SelectSingleNode()是一個xpath表達式 ,xpath版本1.0是精確的(請參閱此處的xpath 1.0規範 )。

XPath是另一種技術,它有自己的規範,文檔和討論。您通常可以搜索xpath教程或文章而不是HtmlAgilityPack(HAP)細節,以便更好地了解應該將哪種表達式傳遞給HAP以獲取特定的HTML元素。

為了舉例,假設你的HTML看起來像這樣:

<div id="zg_centerListWrapper">
    <div>I want this</div>
    <div>..and this</div>
    <div>..and this one too</div>
</div>

看到你感興趣的divdiv直接子 div[@id = 'zg_centerListWrapper'] ,那麼你可以使用下面的xpath來獲取它們:

var xpath = "//div[@id = 'zg_centerListWrapper']/div";
HtmlNodeCollection ourNodes = doc.DocumentNode.SelectNodes(xpath);

熱門答案

您可以使用DocumentNode.Descendants("div") ,然後使用類似的東西

.Where(div => div.Attributes.Contains("class") && div.Attributes["class"].Value.Contains("best category"))

但是,文檔肯定會有所幫助..




許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因