如何使用 HTMLAgilityPack 访问多个 <div> 标签的内容?
How do I access the content of multiple <div> tags with HTMLAgilityPack?
我无法在 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,每个都是 best sellers
类别中的一个项目。
为了访问每个属性似乎很费力(我也不完全确定乍一看我会怎么做)。那么我应该改用 DocumentNode.SelectNodes()
吗?我将如何实施它?此外,我发现很难相信在这样的时间之后没有 HTMLAgilityPack
的文档......也许我在错误的地方寻找,因为 youtube 似乎是我目前最好的来源。
你可以使用 DocumentNode.Descendants("div")
然后像
.Where(div => div.Attributes.Contains("class") && div.Attributes["class"].Value.Contains("best category"))
但是,是的,文档肯定会有所帮助..
实际上,SelectNodes()
和SelectSingleNode()
的参数是一个xpath表达式,准确地说是xpath version 1.0(参见xpath 1.0 spec here)。
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
是 div[@id = 'zg_centerListWrapper']
的 直接子代 ,那么您可以使用以下 xpath 获取它们:
var xpath = "//div[@id = 'zg_centerListWrapper']/div";
HtmlNodeCollection ourNodes = doc.DocumentNode.SelectNodes(xpath);
我无法在 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,每个都是 best sellers
类别中的一个项目。
为了访问每个属性似乎很费力(我也不完全确定乍一看我会怎么做)。那么我应该改用 DocumentNode.SelectNodes()
吗?我将如何实施它?此外,我发现很难相信在这样的时间之后没有 HTMLAgilityPack
的文档......也许我在错误的地方寻找,因为 youtube 似乎是我目前最好的来源。
你可以使用 DocumentNode.Descendants("div")
然后像
.Where(div => div.Attributes.Contains("class") && div.Attributes["class"].Value.Contains("best category"))
但是,是的,文档肯定会有所帮助..
实际上,SelectNodes()
和SelectSingleNode()
的参数是一个xpath表达式,准确地说是xpath version 1.0(参见xpath 1.0 spec here)。
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
是 div[@id = 'zg_centerListWrapper']
的 直接子代 ,那么您可以使用以下 xpath 获取它们:
var xpath = "//div[@id = 'zg_centerListWrapper']/div";
HtmlNodeCollection ourNodes = doc.DocumentNode.SelectNodes(xpath);