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

如何用Scrapy CSS选择器提取div下span标签后的金额数值?

解决金额提取问题

你的代码med.css('div span ::text').get()只能拿到MRP,是因为这个选择器定位的是span标签内部的文本,而目标金额182.78是span的同级文本节点,不在span标签范围内。下面是几种可行的提取方案:

方法一:CSS选择器结合文本过滤

先获取包含金额的div下所有文本节点,再筛选出目标内容:

# 获取第二个div下的所有文本节点
text_list = med.css('div:nth-child(2) ::text').getall()
# 清理空白并过滤出金额
target_amount = [t.strip() for t in text_list if t.strip() and t.strip() not in ('MRP', '₹')][0]
print(target_amount)  # 输出 182.78

方法二:使用XPath直接定位

XPath对文本节点的定位更灵活,可直接选中span后的有效文本:

# 定位第二个div下非空白、不含MRP的文本节点
target_amount = med.xpath('./div[2]/text()[normalize-space() and not(contains(., "MRP"))]').get().strip()
print(target_amount)  # 输出 182.78

方法三:提取父div文本后用正则提取

如果页面结构稳定,也可以直接获取父div的全部文本,再用正则提取数字:

full_text = med.css('div:nth-child(2)').get()
# 正则匹配小数格式的金额
import re
target_amount = re.search(r'\d+\.\d+', full_text).group()
print(target_amount)  # 输出 182.78

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 02:32:43