XPath 实战例子大全(2025最新版)
直接复制就能用,覆盖 99% 真实网站场景(淘宝、京东、抖音、百度、登录框、表格、无限加载等)
1. 通用输入框 & 按钮(任何网站都能用)
//input[not(@type='hidden') and not(@disabled)] → 所有可见可输入框
//input[@type='text' or @type='password' or @type='search' or not(@type)]
//button[not(@disabled)] | //input[@type='submit' or @type='button'] | //a[contains(@class,'btn') or contains(text(),'提交')]
//*[contains(text(),'登录') or contains(text(),'Login') or contains(text(),'Sign in')]
2. 按文本精准/模糊定位(爬虫最爱)
//*[contains(text(),'登录')]
//*[normalize-space()='立即购买'] → 去空格最稳
//*[contains(normalize-space(),'加入购物车')]
//a[starts-with(normalize-space(),'第') and ends-with(normalize-space(),'章')] → 小说目录
3. 淘宝/京东/拼多多商品列表经典写法
//div[contains(@class,'item') or contains(@class,'product') or contains(@class,'gl-item')]
//li[contains(@class,'item') and not(contains(@class,'ad'))] → 去广告
(//div[contains(@class,'item')])[position()>=2] → 从第2个商品开始(去头部广告)
4. 商品标题、价格、店铺、销量(超级稳组合)
标题:.//h3 | .//h2 | .//a[contains(@class,'title')] | .//div[contains(@class,'title')]
价格:.//span[contains(@class,'price') or contains(@class,'Price')]//text()[contains(.,'¥') or contains(.,'$')]
店铺:.//ancestor::*[contains(@class,'shop')]//a | .//div[contains(@class,'shop')]//a
销量:.//span[contains(text(),'人付款购') or contains(text(),'销量') or contains(text(),'sold')]
5. 表格数据提取神器(政府、企业后台最常见)
//table//tr[td] → 只取有内容的行
//tr[position()>1]//td[2] → 第2列所有数据(去表头)
//th[text()='姓名']/ancestor::table//tr/td[1] → “姓名”列所有值
//td[text()='删除']/parent::tr//td[1] → 要删除的那一行的第一列
//th[text()='操作']/parent::tr/parent::table//tr/td[last()] → 操作列的所有按钮
6. 翻页按钮(下一页、加载更多)
//a[contains(text(),'下一页') or contains(text(),'下一章') or contains(text(),'Next')]
//li[contains(@class,'current') or contains(@class,'active')]/following-sibling::li[1]/a
//*[contains(@class,'pagination')]//a[contains(text(),'下一页') or contains(text(),'>')]
//button[contains(text(),'加载更多') or contains(text(),'加载更多')]
7. 登录框终极写法(任何网站都能登录)
用户名://input[contains(@placeholder,'用户') or contains(@placeholder,'手机') or contains(@id,'user') or contains(@name,'user')]
密码://input[@type='password']
验证码输入框://input[contains(@placeholder,'验证码') or contains(@id,'captcha')]
登录按钮:(//button | //input | //a)[contains(normalize-space(),'登录') or contains(normalize-space(),'Login') or @type='submit'][1]
8. 无限滚动页面(抖音、小红书、B站)
//div[contains(@class,'video') or contains(@class,'feed') or contains(@class,'item')]
//span[@data-e2e='like-count'] → 点赞数
//span[contains(text(),'万')]/ancestor::*[contains(@class,'video')]
9. 复杂嵌套终极例子(真实京东商品卡片)
<div class="gl-item">
<div class="p-price"><strong>¥999.00</strong></div>
<div class="p-name"><a>Apple iPhone 15</a></div>
<div class="p-shop"><span>京东自营</span></div>
</div>
对应最强 XPath(一行一个):
价格:.//div[contains(@class,'p-price')]//strong/text()
标题:.//div[contains(@class,'p-name')]//a/text()
店铺:.//div[contains(@class,'p-shop')]//span/text()
整条商品://div[contains(@class,'gl-item')]
10. 10条“保姆级”万能 XPath(直接收藏)
1. //*[contains(@class,'price') or contains(@class,'Price')]//text()
2. //*[contains(text(),'¥') or contains(text(),'$')]
3. //a[contains(@href,'javascript:void(0)') or contains(@href,'#')] → 假链接
4. (//*[contains(text(),'登录')])[1] → 第一个登录入口
5. //iframe/../following-sibling::*//input → iframe 外面的输入框
6. //td[contains(text(),'合计')]/following-sibling::td//text()
7. //div[count(.//*) = 0 and string-length(normalize-space(.)) > 10] → 纯文本块
8. //img/@src | //img/@data-src | //img/@data-original → 各种懒加载图片
9. //span[contains(@class,'count') or contains(@class,'num')]/text()
10. (//div[contains(@class,'item') or contains(@class,'card')])[not(contains(@class,'ad'))]
把这 60+ 条例子直接保存到你的笔记里,
以后遇到任何网站,90% 的情况直接 Ctrl+F 就能找到现成的 XPath!
要不要我再给你一份“网站专属 XPath 速查表”(淘宝、京东、抖音、微信公众号、知乎、GitHub…全覆盖)?一句话就行!