XPath 三分钟速成:复制完整 XPath 再修剪
官方教程的思路是「不教语法教手法」:借助浏览器开发者工具,把大部分 XPath 抄出来再修剪。本页把这套手法压缩成四个动作。
零、认识开发者工具
任意网页按 F12(或右键 → 检查)打开。最常用的是左上角「选取元素」箭头:点它,再去页面上点目标内容,元素面板自动跳到对应代码。光标在代码行上悬停,页面会显示高亮色块——色块盖住谁,这行代码就对应谁。这是全部手法的基础。
动作一:复制完整 XPath
在目标代码行上右键 → Copy → Copy full XPath,得到一条从 /html/body 开始的绝对路径:
/html/body/div[1]/div/div[1]/div/div/div[2]/ul/li[1]/div[2]/h4/a
动作二:删头补杠
删掉开头的 /html/body,并把开头补成 //。应用只支持以 // 开头的选择器,这是硬约束:
//div[1]/div/div[1]/div/div/div[2]/ul/li[1]/div[2]/h4/a
动作三:去重留尾
如果这条 XPath 是从某条列表 XPath 派生的(如单条结果里的名字、链接),删掉与列表语句重复的前缀,只留差异部分——省市县已由列表填过,只填街道小区:
//div[2]/h4/a
动作四:去序号取全体
方括号里的数字是序号(li[1] 是第一条,li[12] 是第十二条)。要「所有同类节点」时删掉方括号序号:li[12]/a 变 li/a;要「某个特定容器」时序号才保留。
进阶一毫米
抄出来的绝对路径又长又脆,站点稍微改版就失效。更稳的属性定位法只多一个观察步骤——看目标标签的开头写法:
<li class="clearfix"> → //li[@class='clearfix']
<div id="playlist"> → //div[@id='playlist']
按 class 或 id 定位,页面结构小改也大概率不受影响。优先用这个写法,实在找不到稳定属性再退回绝对路径。
这四个动作覆盖 SearchList、SearchName、SearchResult、ChapterRoads、ChapterResult 五条字段的全部写法。剩下的问题多出在「选错了目标节点」,回对应的字段页看定位技巧即可。