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

Selenium中如何提取h2标签内的动态数字?

解决XPath提取h2标签中数字的问题

嘿,我明白你的困扰了——你要提取的数字是h2标签里的直接文本节点,而不是子元素里的内容,之前的XPath没精准定位到它,所以只拿到了标签里的文字。咱们一步步来解决:

先分析你的HTML结构

你的HTML简化后是这样的:

<h2>
  <pwwgen-label>
    <span>Order number: </span>
  </pwwgen-label>
  1814400752
</h2>

数字1814400752是h2的直接子文本节点,不是任何子元素的内容,所以需要专门定位这个节点。

可行的XPath方案

方案1:直接定位h2的最后一个文本节点

用这个XPath可以精准拿到数字:

//h2/text()[last()]

解释://h2/text()会返回h2下所有直接文本节点(包括开头的空白节点),[last()]选取最后一个,也就是那个数字所在的文本节点。如果返回的结果带空格,可以用normalize-space()处理掉:

normalize-space(//h2/text()[last()])

方案2:提取h2的全部文本后过滤数字

如果你的XPath支持2.0及以上版本,可以直接用正则替换掉非数字内容:

replace(//h2, '[^0-9]', '')

如果是在代码里处理,也可以先获取h2的完整文本(比如用//h2的text内容),再用正则提取数字(比如Python里的re.findall(r'\d+', h2_text))。

方案3:排除子元素,选取h2的直接文本

用这个XPath选取h2中不是pwwgen-label子元素的节点文本:

//h2/node()[not(self::pwwgen-label)]/text()

同样可以配合normalize-space()去除多余空格。

为什么之前只拿到了"Order number:"?

大概率是你用了类似//h2//text()的XPath,它会返回所有子节点(包括span里的)的文本,或者只取了第一个文本节点(h2开头的空白),而没定位到最后那个数字节点。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:49:25