【发布时间】:2014-08-14 19:40:20
【问题描述】:
我已经掌握了使用 html 敏捷包使用属性和 xpath 查找特定节点的窍门。问题是,我一直在为我的每个项目手动执行此操作(打开网站 html 并扫描具有我需要的文本的节点)。有没有办法通过其内部文本选择单个节点?这将使为内容方案相同但属性标签随时间改变值的网站编写更新脚本变得更加容易。提前致谢!
【问题讨论】:
标签: c#-4.0 xpath html-agility-pack
我已经掌握了使用 html 敏捷包使用属性和 xpath 查找特定节点的窍门。问题是,我一直在为我的每个项目手动执行此操作(打开网站 html 并扫描具有我需要的文本的节点)。有没有办法通过其内部文本选择单个节点?这将使为内容方案相同但属性标签随时间改变值的网站编写更新脚本变得更加容易。提前致谢!
【问题讨论】:
标签: c#-4.0 xpath html-agility-pack
如果您提供了示例 HTML 会更好,但由于您没有提供,假设我们有包含此标记的 HTML:
<body>
<div class="foo">bar</div>
</body>
您可以使用 HtmlAgilityPack 的 SelectSingleNode() 和 XPath 通过其属性选择 <div>,如下所示:
myHtmlDocument.DocumentNode.SelectSingleNode("//div[@class='foo']");
或者您可以像这样通过内部文本选择相同的内容:
myHtmlDocument.DocumentNode.SelectSingleNode("//div[.='bar']");
希望对您有所帮助。
【讨论】:
//div[text()='bar'] 而不是//div[.='bar'] 之类的东西,不是吗?