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

如何编写XPATH选取指定h2后至下一个h2/table结束前的td元素

精准定位指定

后的目标元素

你需要的是一个能限制范围的XPath,既要选中目标

之后的,又要在遇到下一个

或者所在结束时停止。以下是通用解决方案:

通用XPath表达式(适配任意目标标题)

把表达式中的TARGET_HEADING替换成你要定位的标题文本即可:

//h2[text()='TARGET_HEADING']/following::td[
  not(preceding::h2[text() != 'TARGET_HEADING'])
  and ancestor::table[1] = //h2[text()='TARGET_HEADING']/ancestor::table[1]
]

表达式拆解

  1. 定位目标标题://h2[text()='TARGET_HEADING'] 精准找到你指定的

    标签

  2. 筛选后续
:/following::td 取出该标题之后所有的元素
  • 排除后续其他

    后的

  • :not(preceding::h2[text() != 'TARGET_HEADING']) 确保选中的不会出现在另一个

    之后,以此实现"到下一个

    为止"的边界限制
  • 限定在同一个内:ancestor::table[1] = ...following-sibling

    //h2[text()='TARGET_HEADING']/following-sibling::tr/td[
      not(preceding-sibling::h2[text() != 'TARGET_HEADING'])
    ]
    

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

    和目标

    属于同一个表格,避免选中其他表格里的

    示例验证

    • 当目标标题为HEADING-1时,替换后表达式:

      //h2[text()='HEADING-1']/following::td[
        not(preceding::h2[text() != 'HEADING-1'])
        and ancestor::table[1] = //h2[text()='HEADING-1']/ancestor::table[1]
      ]
      

      会选中对应Country为India、Nepal的

    元素。

  • 当目标标题为HEADING-2时,替换后表达式:

    //h2[text()='HEADING-2']/following::td[
      not(preceding::h2[text() != 'HEADING-2'])
      and ancestor::table[1] = //h2[text()='HEADING-2']/ancestor::table[1]
    ]
    

    会选中对应Country为USA、Canada的

  • 元素。

    简化场景(如果

    和

    是兄弟节点)

    如果你的HTML结构中,

    和包含

    的
    保证是直接兄弟关系,可以用更高效的轴:
  • 相关产品推荐
    方舟 Agent Plan

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

    最近更新时间:2026.07.23 11:42:59