You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何我的XPath使用following-sibling无效?如何选中活跃页后的元素?

Hey,我来帮你搞定这个XPath的问题~

首先你原来的XPath失效主要有两个原因:一是硬写了li[2],这完全依赖活跃页的固定位置,太不灵活;二是你找的是当前<a>标签的同级兄弟,但目标的a和input其实在活跃页所在<li>的下一个<li>里,路径根本没找对地方。

根据你的需求,我分两种常见场景给你最简解决方案:

场景1:active_page类在<li>标签上

比如你的HTML结构是这样的:

<div id="pagination"> 
  <ul class="zPagination"> 
    <li><a href="https://www.test.com/page&pagination=10">«</a></li> 
    <li class="active_page"><a href="#">3</a></li> 
    <li><a href="#">4</a><input type="hidden" value="4"></li> 
  </ul>
</div>

最简XPath可以直接定位到活跃li的下一个li,再筛选里面的a和input:

//li[@class="active_page"]/following-sibling::li[1]//*[self::a or self::input]

如果只想分别提取单个元素,也可以拆成两条:

//li[@class="active_page"]/following-sibling::li[1]/a[1]  <!-- 下一个a标签 -->
//li[@class="active_page"]/following-sibling::li[1]/input[1]  <!-- 下一个input标签 -->

场景2:active_page类在<a>标签上

比如HTML结构是:

<div id="pagination"> 
  <ul class="zPagination"> 
    <li><a href="https://www.test.com/page&pagination=10">«</a></li> 
    <li><a class="active_page" href="#">3</a></li> 
    <li><a href="#">4</a><input type="hidden" value="4"></li> 
  </ul>
</div>

这时候需要先找到带active_page的a,再回到它的父节点li,然后找下一个li里的元素:

//a[@class="active_page"]/../following-sibling::li[1]//*[self::a or self::input]

同样,拆成单个元素的写法:

//a[@class="active_page"]/../following-sibling::li[1]/a[1]
//a[@class="active_page"]/../following-sibling::li[1]/input[1]

核心思路就是:先精准定位到活跃页所在的li节点,再用following-sibling::li[1]找到它的下一个分页项li,最后在这个li里提取你要的a和input元素——这样不管活跃页在哪个位置,XPath都能稳定生效~

内容的提问来源于stack exchange,提问作者Mkgl

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 03:40:50