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

使用XPath text()函数提取页面价格时遇到的异常问题

解决XPath提取价格时匹配多个文本节点的问题

问题原因

你遇到的情况是因为实际页面DOM中,目标<span>元素下存在多个文本节点——虽然你提供的静态HTML代码里只显示了$30.00,但页面渲染时可能生成了额外的空白文本节点(比如换行、空格)或脚本插入的隐藏文本,导致使用text()时返回两个节点,其中第一个是无效的隐藏/空白内容,第二个才是可见的目标价格。

解决方案

以下几种方法可以精准提取目标价格:

  1. 直接定位第二个文本节点
    使用索引指定选择第二个文本节点,XPath表达式如下:

    //*[@id="module_product_price_1"]/div/div/span/text()[2]
    
  2. 提取元素的合并文本内容
    不要直接选择文本节点,先定位到<span>元素,再通过元素的文本属性获取内容——这种方式会自动合并该元素下所有文本节点,并过滤掉无效的空白内容:

    • JavaScript实现:
      document.querySelector('#module_product_price_1 div div span').textContent.trim()
      
    • Python(Scrapy/lxml)实现:
      response.xpath('//*[@id="module_product_price_1"]/div/div/span').get().strip()
      
  3. 过滤非空文本节点
    使用normalize-space()函数过滤掉空白的文本节点,只保留有效内容:

    //*[@id="module_product_price_1"]/div/div/span/text()[normalize-space() != '']
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 21:22:49