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

如何正确使用XPath preceding-sibling?获取每个div.row的最近前置h2

这问题我之前踩过坑!你当前用的preceding-sibling::h2会返回当前节点所有前置的h2兄弟元素,而大多数解析工具默认会取第一个匹配的节点(也就是最顶部的Apple),所以才会所有row都指向它。

修正方案:选中最近的前置h2

只需要在XPath表达式末尾加上[1],限定取第一个匹配的节点即可:

preceding-sibling::h2[1]

为什么这能生效?

preceding-sibling轴的节点是按反向文档顺序排列的——离当前节点越近的节点,在轴的结果里排得越靠前。所以[1]就会精准定位到当前节点前最近的那个h2元素。

批量匹配的完整XPath

如果你要一次性获取每个div.row对应的最近h2,可以用这个完整表达式:

//div[@class='row']/preceding-sibling::h2[1]

针对你的HTML结构测试:

  • 对应内容为A的row,会选中<h2>Apple</h2>
  • 对应内容为B的row,会选中<h2>Banana</h2>
  • 对应内容为C的row,会选中<h2>Strawberry</h2>

完全符合你的需求~

内容的提问来源于stack exchange,提问作者聖杯ツグミ

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 17:18:13