在电商数据采集领域,基于 Python 的 API 调用是高效、合规的核心方案。不同平台(淘宝、京东、1688 等)均提供官方开放 API,同时也存在非官方爬虫方案(需注意合规性)。以下从官方 API 体系、调用流程、关键技术及合规注意事项展开详细说明。
一、主流电商平台官方 API 体系
各平台均通过 “开放平台” 提供标准化 API,需注册开发者账号并申请权限,核心接口覆盖商品、订单、评价等核心数据。
1. 淘宝 / 天猫开放平台(Taobao Open Platform)
-
核心 API 分类:
- 商品类:
taobao.item.get(商品详情)、taobao.items.search(商品搜索)、taobao.item.qualification.get(商品资质)等。 - 订单类:
taobao.trade.fullinfo.get(订单详情)、taobao.trades.sold.get(已售订单列表)等。 - 评价类:
taobao.item.review.list.get(商品评价列表)。 - 店铺类:
taobao.shop.get(店铺信息)。
- 商品类:
-
权限与收费:
基础接口免费(如商品详情),高级接口(如订单、用户数据)需企业认证,部分接口按调用次数收费(阶梯定价)。
需申请App Key和App Secret,调用时需签名验证。
2. 京东开放平台(JD Open Platform)
-
核心 API 分类:
- 商品类:
jingdong.item.read.get(商品详情)、jingdong.search.product(商品搜索)。 - 订单类:
jingdong.order.detail.get(订单详情)、jingdong.order.list.get(订单列表)。 - 评价类:
jingdong.comment.products.get(商品评价)。
- 商品类:
-
特点:
接口文档更注重 “业务场景化”(如供应链、售后),需通过 “京东万象” 平台申请接口,部分接口需缴纳押金或按调用量付费。
3. 1688 开放平台(1688 Open Platform)
-
核心 API 分类:
- 商品类:
1688.item.detail.get(商品详情)、1688.offer.search(供应商品搜索)。 - 店铺类:
1688.shop.info.get(店铺信息)。 - 交易类:
1688.trade.get(订单详情)。
- 商品类:
-
特点:
聚焦 B2B 场景,接口多围绕 “批发、供应链”,企业认证后可获取更多权限,基础接口免费但调用频率限制严格(如单 IP 日调用上限 1000 次)。
4. 其他平台
- 拼多多:通过 “拼多多开放平台” 提供
pdd.goods.detail.get(商品详情)等接口,需企业认证,接口调用需申请权限。 - 抖音电商:通过 “抖音开放平台” 提供商品、订单接口,需绑定抖音小店,部分接口依赖店铺权限。
二、Python 调用官方 API 的核心流程
以淘宝开放平台为例,官方 API 调用需遵循 “认证→签名→请求→解析” 四步流程,其他平台逻辑类似。
1. 前期准备
- 注册开发者账号:登录对应平台开放平台(如淘宝开放平台),完成个人 / 企业认证。
- 创建应用:生成
App Key和App Secret(签名密钥)。 - 申请接口权限:在开放平台 “接口管理” 中申请目标接口的调用权限(部分接口需审核)。
2. 核心调用步骤(以 Python 为例)
步骤 1:理解 API 请求格式
官方 API 通常采用HTTP GET/POST请求,参数需包含:
- 公共参数:
app_key(应用标识)、timestamp(时间戳,格式yyyy-MM-dd HH:mm:ss)、format(返回格式,如json)、v(API 版本,如2.0)、sign(签名,核心验证参数)。 - 业务参数:接口专属参数(如
item_id(商品 ID)用于taobao.item.get接口)。
步骤 2:生成签名(核心验证逻辑)
签名是平台验证请求合法性的关键,生成规则(以淘宝为例):
-
将所有参数(公共 + 业务)按参数名ASCII 升序排序。
-
拼接为
key=value&key=value格式的字符串。 -
在字符串首尾添加
App Secret,形成secret+string+secret。 -
对拼接后字符串进行MD5 加密,得到 32 位大写签名
sign。
Python 签名生成示例代码:
import hashlib
import time
def generate_sign(params, app_secret):
# 1. 参数按ASCII升序排序
sorted_params = sorted(params.items(), key=lambda x: x[0])
# 2. 拼接为key=value&格式
sign_str = '&'.join([f"{k}={v}" for k, v in sorted_params])
# 3. 首尾加secret
sign_str = app_secret + sign_str + app_secret
# 4. MD5加密并转为大写
sign = hashlib.md5(sign_str.encode('utf-8')).hexdigest().upper()
return sign
# 示例参数
app_key = "你的AppKey"
app_secret = "你的AppSecret"
params = {
"app_key": app_key,
"method": "taobao.item.get", # 接口名
"timestamp": time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()),
"format": "json",
"v": "2.0",
"fields": "title,price,num", # 需要返回的字段
"item_id": "654321" # 商品ID
}
# 生成签名
params["sign"] = generate_sign(params, app_secret)
步骤 3:发送请求并解析数据
使用requests库发送 HTTP 请求,解析返回的 JSON 数据:
import requests
url = "http://gw.api.taobao.com/router/rest" # 淘宝API网关地址
response = requests.get(url, params=params)
result = response.json()
# 解析结果(成功时返回业务数据,失败时返回错误信息)
if "error_response" in result:
print(f"调用失败:{result['error_response']['msg']}")
else:
item_data = result["item_get_response"]["item"]
print(f"商品标题:{item_data['title']},价格:{item_data['price']}")
三、非官方采集方案(爬虫)及风险提示
若官方 API 权限不足或接口限制严格,部分场景会使用爬虫采集数据,但需严格遵守合规性。
1. 核心爬虫技术(Python 工具)
-
基础请求:
requests库模拟 HTTP 请求,需设置User-Agent、Cookie等请求头伪装浏览器。 -
动态页面处理:电商平台商品详情、评价等页面多通过 JavaScript 渲染,需用
Selenium或Playwright模拟浏览器加载(执行 JS)。 -
反爬应对:
- 代理 IP 池:避免单 IP 被封禁(推荐使用阿布云、芝麻代理等服务)。
- 随机请求间隔:通过
time.sleep(random.uniform(1, 3))降低频率。 - 验证码处理:对接打码平台(如云打码)识别图形验证码。
2. 合规风险警示
- 法律风险:违反《电子商务法》《网络安全法》,平台可追究侵权责任(如京东曾起诉爬虫公司)。
- 反爬限制:平台通过动态 Cookie、JS 加密参数(如淘宝
sign、京东token)、验证码、IP 封锁等手段限制爬虫,维护成本高。
四、开发建议与工具推荐
-
优先使用官方 API:合规性高、数据稳定,避免法律风险。
-
接口调试工具:
- 平台自带调试工具(如淘宝开放平台 “API 测试工具”)。
- Postman:快速验证请求参数和签名。
-
Python 库推荐:
requests:发送 HTTP 请求。pandas:数据清洗与存储。redis:缓存 API 调用结果,减少重复请求。
-
注意调用限制:各平台对 API 调用频率(如淘宝单 AppKey 每秒 5 次)、并发数有严格限制,需做好限流控制。
总结
基于 Python 的电商数据采集应以官方开放 API为核心方案,需熟悉平台接口规则、签名机制及权限申请流程。非官方爬虫仅可用于个人学习,且需严格遵守平台协议和法律法规。实际开发中需注重代码健壮性(如异常处理、重试机制)和数据合规性,避免因滥用导致账号封禁或法律风险。