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

如何编写Scrapy CSS选择器提取td下p标签中的金额数值

如何用Scrapy提取HTML中p标签内的金额数值?

步骤1:先获取p标签的文本内容

你当前的CSS选择器获取的是整个p元素,需要修改选择器来提取标签内的文本:

# 获取p标签的文本内容
p_text = response.css("#__next > div > div:nth-child(2) > div > div.data-table_container__pPKXQ > table > tbody > tr:nth-child(1) > td:nth-child(3) > p:nth-child(1)::text").get()

# 如果p标签内有多个分散的文本节点(比如混有其他子标签),用getall()拼接完整文本
p_text = ''.join(response.css("#__next > div > div:nth-child(2) > div > div.data-table_container__pPKXQ > table > tbody > tr:nth-child(1) > td:nth-child(3) > p:nth-child(1)::text").getall()).strip()

步骤2:从文本中提取金额数值

根据p标签文本的实际格式,选择对应的提取方式:

  • 正则表达式提取通用数字(支持整数/小数)
    适用于金额带符号(如¥、$、元)或混杂其他描述文字的场景:

    import re
    
    if p_text:
        # 匹配数字部分,兼容整数和小数格式
        amount_match = re.search(r'\d+\.?\d*', p_text)
        if amount_match:
            amount = amount_match.group()
            # 如需转为数值类型
            amount_float = float(amount)
    
  • 字符串分割提取(适用于固定格式文本)
    如果文本格式固定(比如"订单金额:123.45元"),可以直接通过分割和替换处理:

    if p_text:
        # 按固定前缀分割,再去除后缀单位
        amount = p_text.split("订单金额:")[-1].replace("元", "").strip()
    

额外提示

如果金额是嵌套在p标签的子标签(如<span>)里,需要调整CSS选择器直接定位到子标签的文本,例如:

# 假设金额在p标签下的span元素内
amount_text = response.css("#__next > div > div:nth-child(2) > div > div.data-table_container__pPKXQ > table > tbody > tr:nth-child(1) > td:nth-child(3) > p:nth-child(1) span::text").get()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 21:25:38