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

如何用XPath提取div节点内的指定数字123456789而非全部内容?

解决方法:提取目标数字123456789

针对你的HTML结构和需求,以下是几种可行的解决方案,可根据你使用的工具/编程语言环境选择:

方案1:XPath 2.0+直接提取过滤

如果你的环境支持XPath 2.0及以上版本,可以利用字符串函数直接匹配并提取数字:

//div[@class='TestClass']/text()[contains(., '123456789')]/replace(., '[^0-9]', '')

这个表达式的逻辑:

  • 定位到TestClass类div下包含目标数字的文本节点
  • 通过replace函数移除所有非数字字符,仅保留纯数字部分

方案2:XPath 1.0定位+代码处理(兼容多数旧环境)

如果你的环境仅支持XPath 1.0(如部分爬虫工具、旧版解析库),可以先定位目标文本节点,再用编程语言的字符串处理功能提取数字:

第一步:用XPath定位目标文本节点

//div[@class='TestClass']/text()[contains(., '123456789')]

执行后会得到文本内容:"123456789, "

第二步:代码层提取数字

示例(Python):

import re
target_text = '"123456789, "'
number = re.search(r'\d+', target_text).group()
# 输出结果:123456789

示例(JavaScript):

const targetText = `"123456789, "`;
const number = targetText.match(/\d+/)[0];
// 输出结果:123456789

方案3:XPath 1.0字符串截取(依赖固定格式)

若不想用代码处理,也可以通过XPath 1.0的字符串截取函数实现,但该方法依赖文本格式固定:

substring-before(substring-after(//div[@class='TestClass'], '"'), ', "')

逻辑说明:

  1. substring-after获取第一个双引号后的内容:123456789, ", Lastname, ...
  2. substring-before截取到, "之前的部分,得到目标数字123456789

注意:如果文本中的引号、逗号位置发生变化,该方法会失效,稳定性不如正则方案


内容的提问来源于stack exchange,提问作者C.O.D.E

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 02:32:13