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

基于标签提取HTML中非链接字段值的XPath方法咨询

解决方案

针对这种字段不固定、无法靠索引定位的场景,核心思路是通过字段标签的文本内容定位元素,再提取其对应的关联值,以下是几种常见HTML结构对应的XPath写法:

1. 标签和值分属同级子元素

如果HTML结构是标签和值放在同一父元素下的不同子标签里,比如:

<div class="detail-row">
  <span class="label">Type activiteit:</span>
  <span class="content">Kampioenschaps clubmatches</span>
</div>

用XPath定位标签后,取它的同级后续元素文本:

//span[text()='Type activiteit:']/following-sibling::span/text()

如果标签和值的标签类型不同(比如标签是<strong>,值是<p>),把following-sibling::span改成对应的值标签类型即可。

2. 标签和值在同一标签内(文本拼接)

如果标签文本和值在同一个标签里,比如:

<p class="info">Type activiteit: Kampioenschaps clubmatches</p>

可以用两种方式提取:

  • 取标签内的第二个文本节点(过滤掉标签文本):
//p[contains(text(),'Type activiteit:')]/text()[2]
  • 用substring-after函数截取标签文本之后的内容:
substring-after(//p[contains(text(),'Type activiteit:')]/text(), 'Type activiteit: ')

3. 值是标签的同级文本节点

如果值没有被标签包裹,直接在标签后面的文本里,比如:

<div class="field-group">
  <strong>Postcode:</strong>
  Jan Stuversdreef 4
</div>

可以定位标签后,取它的同级文本节点,并用normalize-space()过滤空格:

normalize-space(//strong[text()='Postcode:']/following-sibling::text())

或者取父元素下的非空文本:

normalize-space(//strong[text()='Postcode:']/parent::div/text()[normalize-space() != ''])

额外注意事项

  • 如果页面有多个重复的卡片,记得在XPath最前面加上卡片容器的限定,比如//div[@class='data-card']//span[text()='Type activiteit:']/...,避免提取到其他卡片的内容。
  • 处理文本时用normalize-space()可以自动去除首尾空格和换行符,避免提取到无效空白内容。
  • 如果标签文本有细微差异(比如多了空格),可以用contains(text(), 'Type activiteit')代替精确匹配,但要确保关键词足够唯一,不会匹配到其他字段。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 05:42:09