讲师中心 微信公众号
AI工具推荐 视频效率加速

在Python中如何通过Scrapy框架自动化抓取电商商品价格?

轻雪大大_9475

轻雪大大_9475

发布时间:2026-11-03 09:49:20

|

851人浏览过

|

来源于php中文网

原创

Scrapy抓电商价格易被封IP因行为检测严格,需限并发、轮换代理、补全请求头;价格提取须适配多结构并清洗;登录跳转需维护会话;CSV导出要处理编码与空值。

在python中如何通过scrapy框架自动化抓取电商商品价格?

Scrapy抓取电商价格时,为什么常被反爬封IP?

因为电商网站普遍部署了行为检测:频繁请求、缺失User-Agent、无Referer、Cookie未复用、响应头校验等都会触发风控。Scrapy默认并发为16,且不自动轮换请求头,直接跑下去大概率在第20–50页就被返回403或空数据。

实操建议:

立即学习“Python免费学习笔记(深入)”;

  • 必须启用ROTATING_PROXY_LIST(配合scrapy-rotating-proxies)或自建代理池,避免单IP高频访问
  • 在settings.py中设CONCURRENT_REQUESTS = 1起步,确认稳定后再逐步加到3–5
  • 强制覆盖DEFAULT_REQUEST_HEADERS,补全Referer和Accept-Encoding,例如京东商品页referer必须是对应店铺首页
  • 禁用ROBOTSTXT_OBEY = False——电商站robots.txt通常禁止所有爬虫,但实际规则不具法律效力,关掉它才能发请求

如何从HTML中可靠提取价格字段?

电商页面价格结构高度不统一:有的藏在data-price属性里,有的用span嵌套多层,有的甚至用CSS偏移“隐藏”真实数字(如把¥和数字拆成不同标签),还有的价格由JS动态注入。

实操建议:

立即学习“Python免费学习笔记(深入)”;

  • 优先查response.css('span[data-price]::attr(data-price)')或response.xpath('//div[@class="price"]//text()').re(r'¥(\d+\.\d+)'),别硬写//span/text()
  • 对JS渲染页(如部分拼多多、淘宝联盟链接),Scrapy本身不执行JS,需改用scrapy-splash或切换为Playwright+Scrapy混合方案
  • 价格字段务必做清洗:re.sub(r'[^\d.]', '', price_str),否则可能拿到“¥ 1,299.00”或“促销价:¥899”这类脏数据
  • 永远检查len(price_list) > 0再取[0],空列表直接取索引会抛IndexError

如何让Scrapy自动处理登录态和商品详情跳转?

多数电商价格需登录后才显示真实价(如天猫会员价)、或需先请求列表页获取商品URL再发起二次请求,Scrapy默认不维护会话状态,也不自动解析链接。

Python Dependency Candidate Fetcher 2
Python Dependency Candidate Fetcher 2

根据包的能力以及 Jupyter 环境中的导入语句,从候选列表中挑选最适合用户表格工作流的 Python 包。

下载

实操建议:

立即学习“Python免费学习笔记(深入)”;

  • 登录用FormRequest提交账号密码,关键是要提取csrf_token或login_token隐藏字段,否则请求会被拒绝
  • 跳转详情页必须用response.follow()而非scrapy.Request(url=...),前者自动携带当前cookies和headers
  • 若登录后仍拿不到价格,检查是否需要额外请求/api/price?skuId=xxx这类AJAX接口——这时应重写parse_item,用scrapy.Request调API并传入cookies_dict
  • 在start_requests里手动yield scrapy.Request(..., cookies=load_cookies())比依赖中间件更可控

保存价格数据时,为什么CSV输出常乱码或缺字段?

Scrapy的FeedExporter默认用utf-8编码写CSV,但Windows Excel打开UTF-8 CSV需带BOM;另外,如果某个item字段为None或含换行符,CSV会错列甚至崩溃。

实操建议:

立即学习“Python免费学习笔记(深入)”;

  • 导出前统一用item.get('price', 'N/A')兜底,避免None进pipeline
  • 在settings.py加FEED_EXPORT_ENCODING = 'utf-8-sig',让Excel能正确识别
  • 价格字段用str(item['price']).replace('\n', ' ').strip()预处理,防止CSV换行破坏结构
  • 不要依赖-o output.csv命令行导出,改用FEEDS配置支持字段筛选:{'output.csv': {'format': 'csv', 'fields': ['title', 'price', 'url']}}

真正难的不是写spider,而是持续应对前端结构变更——今天好用的XPath,明天商品页一改版就全失效。留个心眼:把选择器逻辑单独抽成配置文件,每次运行前先人工抽检3个SKU,比盲目重跑整个爬虫省时间得多。

热门AI工具

更多
音述AI
音述AI Hot

一款AI音频处理工具,主要用于音述AI是一个以“用声音述说故事”为核心的 AI 音乐创作与声音分享社区,适合需要提升相关任务效率的用户。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

Atoms
Atoms Hot

Atoms是一款AI智能体工具,第一支自动构建真实业务的 AI 团队。

Laper
Laper Hot

Laper是专为编剧、导演和制片人推出的 AI 原生剧本创作工具。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

UP简历
UP简历 Hot

一款AI办公效率工具,主要用于基于AI技术的免费在线简历制作工具,适合需要提升相关任务效率的用户。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

切问学术

切问学术是一款AI论文写作工具,复旦大学NLP团队推出的AI学术智能体。

蛙蛙写作

一款AI论文写作工具,主要用于超级AI智能写作助手,适合需要提升相关任务效率的用户。

相关专题

更多
python打包成可执行文件
python打包成可执行文件

本专题为大家带来python打包成可执行文件相关的文章,大家可以免费的下载体验。

1851

2023.07.20

python能做什么
python能做什么

python能做的有:可用于开发基于控制台的应用程序、多媒体部分开发、用于开发基于Web的应用程序、使用python处理数据、系统编程等等。本专题为大家提供python相关的各种文章、以及下载和课程。

5024

2023.07.25

format在python中的用法
format在python中的用法

Python中的format是一种字符串格式化方法,用于将变量或值插入到字符串中的占位符位置。通过format方法,我们可以动态地构建字符串,使其包含不同值。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

1809

2023.07.31

python教程
python教程

Python已成为一门网红语言,即使是在非编程开发者当中,也掀起了一股学习的热潮。本专题为大家带来python教程的相关文章,大家可以免费体验学习。

30217

2023.08.03

python环境变量的配置
python环境变量的配置

Python是一种流行的编程语言,被广泛用于软件开发、数据分析和科学计算等领域。在安装Python之后,我们需要配置环境变量,以便在任何位置都能够访问Python的可执行文件。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

3607

2023.08.04

python eval
python eval

eval函数是Python中一个非常强大的函数,它可以将字符串作为Python代码进行执行,实现动态编程的效果。然而,由于其潜在的安全风险和性能问题,需要谨慎使用。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

3607

2023.08.04

scratch和python区别
scratch和python区别

scratch和python的区别:1、scratch是一种专为初学者设计的图形化编程语言,python是一种文本编程语言;2、scratch使用的是基于积木的编程语法,python采用更加传统的文本编程语法等等。本专题为大家提供scratch和python相关的文章、下载、课程内容,供大家免费下载体验。

1243

2023.08.11

python合并两个列表
python合并两个列表

Python是一种强大的编程语言,具有许多方便的功能和工具。在Python中,有多种方法可以合并两个列表。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

616

2023.08.10

Tailwind CSS 如何制作导航栏和卡片
Tailwind CSS 如何制作导航栏和卡片

用 Tailwind CSS 制作导航栏和卡片,可先搭建语义化结构,再组合 Flex、Grid、间距、圆角与阴影类。这里整理横向导航、移动端菜单、卡片网格及悬停效果的相关文章,帮助你把常见页面组件做得清晰且适配不同屏幕。

0

2026.11.03

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Uvicorn官方安装与入门手册
Uvicorn官方安装与入门手册

共0课时 | 0人学习

Python uv官方项目管理指南
Python uv官方项目管理指南

共0课时 | 0人学习

Python uv官方安装与入门文档
Python uv官方安装与入门文档

共0课时 | 0人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn