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

求助:如何用XPath提取指定字符串后的文本?附HTML及现有XPath

解决XPath提取特定前缀后文本的问题

这里有几个实用的XPath方案可以帮你提取“Cashback & codes promo”之后的文本,根据不同的XPath版本支持情况来选择:

方法1:使用substring-after()函数(最直接推荐)

如果你的XPath引擎支持XPath 1.0及以上(大部分工具、框架都支持),可以直接用字符串处理函数substring-after()来精准提取目标内容:

substring-after(/html/body/div[5]/div[5]/div[5]/div[2]/div[2]/div[1]/h1/text(), 'Cashback & codes promo ')

细节说明:

  • substring-after(原始字符串, 分隔前缀):这个函数会返回原始字符串中,第一个出现指定前缀之后的所有内容。
  • 注意前缀要和HTML里的实体对应——因为原HTML里写的是&,所以XPath里要匹配Cashback & codes promo (末尾的空格也要保留,和原文本完全一致)。

方法2:适配实体转义的版本

有些场景下,XPath会自动把HTML实体转成实际字符(比如&变成&),这时候可以用实际的&来写前缀:

substring-after(/html/body/div[5]/div[5]/div[5]/div[2]/div[2]/div[1]/h1/text(), 'Cashback & codes promo ')

不确定实体是否被转义的话,两种写法都可以试试,看哪种能返回正确结果。

方法3:固定长度切片(备用方案)

如果你能确认前缀的字符长度是固定的,也可以用substring()函数从指定位置开始截取:

substring(/html/body/div[5]/div[5]/div[5]/div[2]/div[2]/div[1]/h1/text(), 26)

细节说明:

  • Cashback & codes promo (包含末尾空格)一共是25个字符,所以从第26位开始截取就能拿到后面的Direct Energie。不过这个方法不够灵活,一旦前缀内容有变化就会失效,所以优先推荐前两种方法。

另外,建议你优化一下XPath定位逻辑,用类名代替层级定位,这样页面结构调整时更稳定:

substring-after(//h1[@class='title title--sec color-black col-xs-12 merchant__title hide-tablet nopadding bold-text']/text(), 'Cashback & codes promo ')

内容的提问来源于stack exchange,提问作者Pierre-Clément Cazon

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:22:07