XPath 语法速查表 - XML/HTML 选择器语法大全

从 XML/HTML 里捞节点,正则往往是最差的选择——遇到换行缩进就崩。XPath 就是为这件事而生的。本表覆盖节点路径、谓词过滤、轴导航、字符串与函数、通配符与逻辑,并落到爬虫与配置解析的高频场景。写爬虫定位元素、查询 XML 配置、或在测试里断言结构时,用它替代一见空白就失灵的笨重正则。读完能写出精确到位置和属性的选择器,一次命中所要节点。

开发工具·共 34 条命令·最后更新 2026-07-21
xpathxmlhtml爬虫

基础路径 7

/
从根节点选取
//
从任意位置选取(递归)
.
当前节点
..
父节点
/bookstore/book
根下 bookstore 的 book 子元素
//book
文档中所有 book 元素
book/title
book 下的 title 子元素

谓词过滤 6

//book[1]
第一个 book
//book[last()]
最后一个 book
//book[position()<3]
前两个 book
//book[@lang="zh"]
lang 属性为 zh 的 book
//book[price>35]
price 大于 35 的 book
//book[title]
含有 title 子元素的 book

轴 Axes 7

ancestor::div
所有祖先 div
parent::node()
父节点
child::title
子节点 title
descendant::p
所有后代 p
following-sibling::div
之后的兄弟 div
preceding-sibling::h2
之前的兄弟 h2
self::a
自身(当且仅当是 a 时)

常用函数 8

contains(@class, "active")
class 属性包含 active
starts-with(text(), "Hello")
文本以 Hello 开头
normalize-space()
去除首尾空白并压缩中间空白
string-length(text())
文本长度
count(//book)
book 元素总数
concat("a", "-", "b")
字符串拼接
substring("hello", 1, 3)
截取子串
translate("abc", "abc", "ABC")
字符替换

通配与运算 6

*
匹配任意元素节点
@*
匹配任意属性
node()
匹配任意类型节点
//a | //b
a 和 b 的并集
//div[@id="x" and @class="y"]
and 条件
//div[@class="a" or @class="b"]
or 条件

提示

  • // 比 / 慢很多,大范围文档优先用精确路径。
  • contains(@class, "x") 会匹配 "x y" 这种复合 class,比精确匹配更实用。
  • XPath 1.0 不支持正则,需要正则匹配得上 XPath 2.0 或用 contains 组合。

官方参考来源

下方为命令对应的官方权威文档,供你核对最新用法与深入查阅。

由 巧匠 维护

公开更新于 2026年7月21日,内容持续校对官方文档。

联系我们

命令或描述有误?提交反馈、商务合作或产品建议都可发送邮件给我们。

联系我们