在电商数据分析、竞品监控等场景中,获取商品详情数据是常见需求。本文将通过实战案例,分别使用 Requests 库和 Scrapy 框架接入京东商品详情 API,解析数据结构并提取关键信息,帮助开发者快速掌握电商数据采集技巧。
一、京东商品详情 API 分析
京东未公开官方商品详情 API,但通过浏览器开发者工具可发现其移动端接口具有较好的稳定性。本文以移动端商品详情接口为例进行开发:
接口特征
请求 URL:
https://item.m.jd.com/product/{商品ID}.html(HTML 页面,包含 JSON 数据)关键参数:商品 ID(可从商品详情页 URL 获取)
数据格式:HTML 中嵌入 JSON 格式的商品信息(需提取解析)
二、使用 Requests 实现商品数据采集
Requests 是 Python 中常用的 HTTP 请求库,适合快速开发轻量级数据采集工具。
1. 环境准备
2. 核心代码实现
三、使用 Scrapy 框架实现分布式采集
Scrapy 是专业的爬虫框架,适合大规模、高并发的数据采集场景,支持自动处理异步请求、代理池等高级功能。
1. 环境准备
2. 项目创建与实现
2.1 配置文件(settings.py)
2.2 爬虫实现(jd_item.py)
2.3 数据模型(items.py)
2.4 运行爬虫
四、数据结构解析与扩展
京东商品数据结构复杂,核心字段解析如下:
基础信息:
id(商品 ID)、name(商品名称)、brand(品牌信息)价格信息:
jdPrice包含op(当前价)、m(市场价)、t(促销价)库存信息:
stock中的stockState(3 表示有货,0 表示无货)店铺信息:
shop包含店铺 ID、名称、评分等图片信息:
imageList包含多张大图 URL规格参数:
sku2info包含不同规格(颜色、尺寸等)的库存和价格
可根据业务需求扩展字段,例如提取商品详情描述、用户评价等信息(需分析对应接口)。
五、注意事项
反爬策略:
合理设置请求间隔(
DOWNLOAD_DELAY)使用随机 User-Agent 池
必要时配置代理 IP 池
合法性:
遵守网站 robots 协议
采集数据仅供个人学习使用,不得用于商业用途
避免对服务器造成过大压力
接口稳定性:
京东接口可能不定期更新,需定期维护解析规则
建议添加异常捕获和日志记录,提高程序健壮性
通过本文的实战案例,你可以快速掌握使用 Python 采集京东商品数据的方法。Requests 适合快速验证和小规模采集,而 Scrapy 更适合构建大规模、可扩展的采集系统。根据实际需求选择合适的工具,并注意合规性和反爬策略,才能稳定高效地获取数据。