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

如何通过前置文本使用XPath捕获指定<p>元素?

可行,以下是正确的XPath写法

你之前用preceding-sibling没成功,核心原因是**preceding-sibling仅匹配元素节点,而“ID:”是独立的文本节点**,得换思路定位。根据常见的HTML结构场景,给出对应的解决方案:

场景1:前置文本“ID:”和目标

是同一父元素下的相邻节点

比如HTML结构类似:

<div>
  ID:
  <p>123</p>
  Name:
  <p>abc</p>
</div>

对应的XPath写法:

//p[preceding-sibling::text()[normalize-space()='ID:']]

如果要精准匹配紧跟“ID:”文本节点后的第一个

,可以用:

//text()[normalize-space()='ID:']/following-sibling::p[1]

场景2:前置文本“ID:”包裹在其他元素内(比如)

比如HTML结构类似:

<div>
  <span>ID:</span>
  <p>123</p>
</div>

对应的XPath写法:

//p[preceding-sibling::*[normalize-space()='ID:']]

或者更简洁的:

//*[normalize-space()='ID:']/following-sibling::p[1]

关键细节:

  • normalize-space()用来处理文本前后的空格、换行等空白字符,避免因HTML格式问题导致匹配失败。
  • 如果目标

    不是前置文本后的第一个元素,可调整[1]为对应位置索引;如果需要同时匹配内容为“123”的条件,可扩展表达式://text()[normalize-space()='ID:']/following-sibling::p[normalize-space()='123']

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 11:47:04