使用HTML Agility Pack根据节点的内部文本选择节点

4

我已经掌握了使用HTML Agility Pack根据属性和XPath查找特定节点的方法。问题在于,我一直在为每个项目手动执行此操作(打开网站HTML并扫描具有所需文本的节点)。是否有一种方法可以通过其内部文本选择单个节点?这将使编写更新脚本更加容易,因为网站的内容方案相同,但属性标签随时间改变值。先谢谢!

1个回答

8

如果您提供了示例HTML代码,那么会更好,但是既然没有提供,让我们假设我们有包含此标记的HTML代码:

<body>
    <div class="foo">bar</div>
</body>

您可以使用HtmlAgilityPack的SelectSingleNode()和XPath通过其属性选择<div>,方法如下:
myHtmlDocument.DocumentNode.SelectSingleNode("//div[@class='foo']");

或者您也可以通过内部文本选择相同的内容,如下所示:
myHtmlDocument.DocumentNode.SelectSingleNode("//div[.='bar']");

希望这可以帮到你。

这么简单的解决方案!我没想到你可以使用xpath直接查找节点的文本。我看到的每个示例都展示了获取所需文本的方法,但没有反过来的方法。谢谢@har07,这正是我要找的。 - Blair Francis
1
为什么要踩我,能解释一下吗?也许你考虑的是类似于//div[text()='bar']而不是//div[.='bar'],对吧? - har07
@har07 你如何编辑 div 的内容/值/源代码? - Eduards

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接