C# 如何访问多个<;部门>;带有HtmlAlityPack的标签?

C# 如何访问多个<;部门>;带有HtmlAlityPack的标签?,c#,html,wpf,html-agility-pack,C#,Html,Wpf,Html Agility Pack,我无法在codeplex网站上找到HTMLAgilityPack的文档。目前我想做的是访问Amazon网站上的div,并获取文本信息,以便在WPF应用程序中使用 var getWeb = new HtmlWeb(); var doc = getWeb.Load(uri); HtmlNode ourNode = doc.DocumentNode.SelectSingleNode("//div[@id = 'zg_centerListWrapper']");

我无法在codeplex网站上找到
HTMLAgilityPack
的文档。目前我想做的是访问Amazon网站上的div,并获取文本信息,以便在WPF应用程序中使用

var getWeb = new HtmlWeb();                     
var doc = getWeb.Load(uri);
HtmlNode ourNode = doc.DocumentNode.SelectSingleNode("//div[@id = 'zg_centerListWrapper']");
该div包含大约12个其他div,每个div都属于
畅销书
类别


为了访问每一个的属性,这似乎是非常困难的(而且我也不完全确定第一眼会怎么做)。那么我应该改用
DocumentNode.SelectNodes()
?我将如何实施它?而且,我发现很难相信在这样一段时间之后,没有关于
HTMLAgilityPack
的文档。。。也许我找错地方了,因为youtube似乎是我目前最好的信息来源

您可以使用
DocumentNode.substands(“div”)

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

但是是的,文档肯定会有帮助

实际上,
SelectNodes()
SelectSingleNode()
的参数是一个xpath表达式,准确地说是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>

请看,那里的共识是“不,他们不应该”!谢谢,但是我如何开始访问/使用该div的子级呢?我是否只需要使用。在每个节点上选择SingleNode-使我尝试使用“zg_centerListWrapper”的子级的初始过程变得毫无意义?很抱歉这样打扰您,如果有文档的话,我不会。您可以循环查看结果:
foreach(outNodes中的HtmlNode节点){//do sth with each node}
HAP的
HtmlDocument
以非常类似的方式设计,您可以先参考后者,在许多情况下都有效,只需要在语法上稍作调整(例如用
Html
替换
Xml
,等等)
var xpath = "//div[@id = 'zg_centerListWrapper']/div";
HtmlNodeCollection ourNodes = doc.DocumentNode.SelectNodes(xpath);