XPath 是一种在 XML 文档中查找信息的语言,它同样适用于 HTML 文档,因为 HTML 可以被看作是一种特殊的 XML。在 XPath 中,你可以使用各种表达式来定位元素。以下是 XPath 中元素定位的一些常见规则和方法:
1. 基本路径
/
表示根元素。//
表示选择文档中的节点,而不考虑它们的位置。.
表示当前节点。..
表示父节点。
2. 通过标签名定位
tagname
选择所有名为tagname
的子元素。//tagname
选择所有名为tagname
的元素,不论它们位于文档中的何处。
3. 通过属性定位
[@attributename]
选择带有名为attributename
的属性的元素。[@attributename='value']
选择带有名为attributename
的属性且属性值等于value
的元素。[attributename1 and attributename2]
选择同时满足多个条件的元素。
4. 文本内容定位
contains(text(), 'substring')
选择文本内容包含substring
的元素。text()='exactstring'
选择文本内容完全等于exactstring
的元素。
5. 层级和位置定位
parent::tagname
选择父节点为tagname
的所有元素(XPath 2.0)。child::tagname
选择所有名为tagname
的子元素(可以简写为tagname
)。ancestor::tagname
选择所有祖先节点为tagname
的元素。descendant::tagname
选择所有后代节点为tagname
的元素(可以简写为//tagname
)。tagname[n]
选择第n
个tagname
元素(n
从 1 开始)。tagname[last()]
选择最后一个tagname
元素。tagname[position()=n]
选择位置为n
的tagname
元素。
6. 逻辑操作符
and
、or
和not()
可以在 XPath 表达式中用于组合多个条件。
7. 通配符
*
匹配任何元素节点。@*
匹配任何属性节点。
8. 命名空间
- 如果你的 XML 或 HTML 文档使用了命名空间,你可能需要使用命名空间前缀来定位元素,例如
prefix:tagname
。
9. 函数
- XPath 提供了许多函数,如
last()
、position()
、concat()
、starts-with()
、substring()
等,这些函数可以在 XPath 表达式中用于更复杂的条件判断或字符串操作。
10. 示例
//div[@class='content']
选择所有 class 属性值为content
的div
元素。//a[contains(text(),'点击这里')]
选择文本内容包含“点击这里”的所有a
元素。//form[@id='loginForm']/input[1]
选择 id 为loginForm
的form
元素中的第一个input
子元素。
注意事项
- XPath 是大小写敏感的。
- 在使用 XPath 表达式时,请确保它与文档的当前结构相匹配。
- 不同的 XPath 引擎可能支持不同的 XPath 版本(XPath 1.0、XPath 2.0 等),因此某些表达式可能在某些环境中不起作用。
- 在 Web 自动化和爬虫中,XPath 是一种常用的元素定位方式,但也要注意它可能不如其他方式(如 CSS 选择器)稳定或高效。
//本文来自文心一言
标签:xpath,定位,XPath,元素,选择,tagname,解析,节点 From: https://www.cnblogs.com/hqsbrx/p/18236696