SearchList:用 XPath 框住整个搜索结果列表
SearchList 是第一条 XPath 字段:在搜索结果页里,框住装着所有结果的那个容器,以及里面的每一条结果。
借开发者工具找结构
- 在搜索结果页按 F12 呼出开发者工具,点左上角的「选取元素」箭头图标;
- 用它点一下任意一条搜索结果的番剧名,元素面板会自动跳到对应的 HTML 行;
- 把光标由下往上悬停(悬停,不是点击)在代码行上,观察页面上的高亮色块——直到色块恰好覆盖一条完整的搜索结果(含图片和文字),这就是「单条结果」的标签;
- 继续往上找它的父级,直到色块覆盖所有搜索结果——这就是「列表容器」。
复制并修剪
在列表容器的代码行上右键,复制它的完整 XPath,得到类似:
/html/body/div[1]/div/div[1]/div/div/div[2]/ul
然后做两处修剪——删掉 /html/body,并在开头补一个 /,再在末尾追加 //li(或子级实际用的标签):
//div[1]/div/div[1]/div/div/div[2]/ul//li
含义:定位到列表容器,取它下面所有叫 li 的子节点——正好是每一条搜索结果。
更短的等价写法
完整 XPath 冗长且脆弱,官方文档展示了更稳的写法——按属性直接定位:
//li[@class='clearfix']
意思是「取所有 class 为 clearfix 的 li」。标签名和属性值怎么来的?看元素面板里那行的写法:<li class="clearfix">。若是 <div id="playlist">,就写 //div[@id='playlist']。换站时灵活变通,容器未必是 ul/li,也可能是 div。
一个语法前提
应用对 XPath 语法的支持并不完整:只支持以 // 开头的选择器。这也是所有字段都要删 /html/body 改 // 开头的原因。写完 SearchList 后继续SearchName 与 SearchResult。