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

如何编写XPath实现匹配指定文本后获取相邻h1元素内容

问题解答

首先可以确认,存在单个XPath表达式即可一次性完成你说的全部操作,不需要分步执行。

适配你提供的HTML结构的完整XPath

直接获取目标数值的表达式如下:

//*[contains(normalize-space(text()), 'Projected earning growth')]/ancestor::div[2]/following-sibling::*[1][self::h2]/text()

表达式逻辑拆解

  • 第一步定位文本所在元素://*[contains(normalize-space(text()), 'Projected earning growth')]
    这里用normalize-space()处理文本前后的换行、空格,避免因为空白字符导致匹配失败,匹配到包含目标文本的
  • 第二步向上跳转两层父div:/ancestor::div[2]
    ancestor轴用于查找当前元素的祖先节点,XPath索引从1开始计数,div[2]即取当前元素往上数的第二层div父节点,刚好对应你说的向外跳转两层div的需求。
  • 第三步取紧邻的h2元素文本:/following-sibling::*[1][self::h2]/text()
    following-sibling轴查找当前节点后面的同级兄弟节点,*[1]取第一个紧邻的兄弟节点,[self::h2]限定该节点为h2标签,最后加text()直接提取节点内的文本值。

适配调整说明

如果你的实际场景中目标节点是h1而非h2,只需要把表达式里的h2替换为h1即可;如果需要兼容多种标题标签,可以把筛选条件改为[self::h1 or self::h2 or self::h3]适配不同场景。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 15:45:03