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

Scrapy提取woocommerce价格返回空值或完整HTML如何解决

问题原因

你之前不加::text拿到完整HTML,是因为Scrapy的get()方法默认会返回选中节点的完整HTML内容。而你给外层span.woocommerce-Price-amount.amount加::text返回空,是因为这个外层span节点本身没有直接的文本内容,你要提取的15.00属于它的子节点<bdi>的直接文本,直接选外层span的文本自然拿不到内容。

正确提取方式

有两种常用的写法可以直接拿到目标价格:

  1. CSS选择器写法
    你需要先定位到<bdi>节点,再提取它的直接文本即可:
def parse(self,response):
    for product in response.css('div.astra-shop-summary-wrap'):
        yield{
            'oprice': product.css('span.woocommerce-Price-amount.amount bdi::text').get().strip()
        }

如果担心存在其他非数字内容干扰,可以结合正则提取纯数字价格:
product.css('span.woocommerce-Price-amount.amount bdi::text').re_first(r'\d+\.\d+')

  1. XPath写法
    定位逻辑和CSS一致,精准度更高:
'oprice': product.xpath('.//span[@class="woocommerce-Price-amount amount"]/bdi/text()').get().strip()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.09 14:27:03