XPath 简介(简单易懂版)
XPath 全称 XML Path Language(XML 路径语言),是一门专门用来在 XML 和 HTML 文档中查找节点 的查询语言。
通俗来说:
XPath 就是网页元素的“地址”,告诉你怎么精准找到你想要的按钮、输入框、文字、链接等。
为什么每个人都要学 XPath?
因为几乎所有自动化工具都依赖它:
- 爬虫:Scrapy、lxml、parsel
- 自动化测试:Selenium、Playwright、Puppeteer、Appium、Cypress(部分)
- 数据提取:Octoparse、WebScraper 等无代码工具
- 后端解析:Java Jsoup、Python lxml 等
XPath 核心能力(就这几件事)
- 找元素(最常用)
- 按标签名://div、//a
- 按 id、class、其他属性://input[@id=’kw’]
- 按文字内容://a[contains(text(),’登录’)]
- 按层级关系://div//span(div 下的任意层级 span)
- 取属性值
- //img/@src → 拿到所有图片链接
- 取文本内容
- //span/text() → 拿到文字
- normalize-space(//div) → 去掉多余空格换行后的干净文本
最经典的 3 个 XPath 示例(百度首页)
//input[@id='kw'] → 搜索输入框(用 id 最稳)
//button[@id='su'] → 百度一下按钮
//a[contains(text(),'新闻')] → 顶部“新闻”链接(用文字)
XPath vs CSS 选择器 对比(快速看懂)
| 功能 | XPath | CSS 选择器 | 谁更强? |
|---|---|---|---|
| 按文本内容找元素 | 支持(超强) | 不支持 | XPath 胜 |
| 找父元素 | 支持(parent:: / ..) | 不支持 | XPath 胜 |
| 找兄弟元素 | 支持(following-sibling::) | 部分支持 | XPath 胜 |
| 语法简洁 | 稍复杂 | 更简洁 | CSS 胜 |
| 性能 | 差不多 | 略快 | 平 |
| 所有主流工具都支持 | 基本都支持 | Selenium 原生支持最好 | 平 |
结论:
- 简单定位 → CSS 更快
- 复杂定位、文字定位、取父级、爬虫 → XPath 完胜
一句话总结
XPath = 网页元素的 GPS 导航
学会它,你就拥有了在任何网页上“指哪打哪”的超能力!
需要我用 3 分钟带你从零上手写第一条 XPath 吗?随时说!