XPath学习核心是建立“文档树+定位逻辑”直觉,掌握//(全文搜索)、/(根路径)、@(属性选取)三类符号及谓词筛选、父子/兄弟关系定位技巧。

学XPath路径表达式,核心不是背规则,而是建立“文档树+定位逻辑”的直觉。它不难,关键在理解节点关系和常用表达式的实际作用。
从三个最常用的路径符号开始
刚上手时,只记牢这三类写法,就能覆盖80%的使用场景:
-
//:全文搜索——不管元素在哪一层,只要名字对就抓出来。
例如//a找所有超链接,//div[@class="content"]找所有 class 是 content 的 div。 -
/:从根往下走——适合结构清晰、层级固定的文档(如 XML 配置文件)。
例如/bookstore/book/title表示“根下的 bookstore → 其下的 book → 再其下的 title”。 -
@:专门用来取属性——写在方括号里配合元素名使用。
例如//img[@src]找所有带 src 属性的图片,//button[@type="submit"]精准定位提交按钮。
用谓词(方括号里的条件)做精准筛选
光找元素不够,经常要“找第几个”“找含某文字的”“找属性值匹配的”。这些都靠谓词实现:
-
//li[1]:第一个 li(注意 XPath 序号从 1 开始,不是 0) -
//li[last()]:最后一个 li -
//a[contains(@href, "github")]:href 里包含 github 的链接 -
//p[starts-with(text(), "温馨提示")]:段落开头是“温馨提示”的文本 -
//div[@data-id and @data-id!=""]:有 data-id 属性且非空的 div
掌握两个实用关系定位技巧
真实网页中,目标元素往往没有稳定 class 或 id,但周围有固定参照物。这时用相对关系更可靠:
-
父节点:
//span[text()="价格"]/../span[2]—— 先找到写着“价格”的 span,再往上到父级,再找它下面第二个 span(常用于表格或标签对) -
兄弟节点:
//label[text()="邮箱"]/following-sibling::input[1]—— 找到“邮箱”label,取它后面紧挨着的第一个 input(适合表单定位) -
当前节点:
//ul/li选中所有 li 后,再用./a或./span[@class="name"]在每个 li 内部继续提取,避免重复写长路径
边学边练的小建议
别光看,动手试才记得住:










