基于Python 的淘宝/京东/1688等主流电商API数据采集接口

194 阅读6分钟

在电商数据采集领域,基于 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 KeyApp 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 KeyApp 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:生成签名(核心验证逻辑)

签名是平台验证请求合法性的关键,生成规则(以淘宝为例):

  1. 将所有参数(公共 + 业务)按参数名ASCII 升序排序

  2. 拼接为key=value&key=value格式的字符串。

  3. 在字符串首尾添加App Secret,形成secret+string+secret

  4. 对拼接后字符串进行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-AgentCookie等请求头伪装浏览器。

  • 动态页面处理:电商平台商品详情、评价等页面多通过 JavaScript 渲染,需用SeleniumPlaywright模拟浏览器加载(执行 JS)。

  • 反爬应对

    • 代理 IP 池:避免单 IP 被封禁(推荐使用阿布云、芝麻代理等服务)。
    • 随机请求间隔:通过time.sleep(random.uniform(1, 3))降低频率。
    • 验证码处理:对接打码平台(如云打码)识别图形验证码。

2. 合规风险警示

  • 法律风险:违反《电子商务法》《网络安全法》,平台可追究侵权责任(如京东曾起诉爬虫公司)。
  • 反爬限制:平台通过动态 Cookie、JS 加密参数(如淘宝sign、京东token)、验证码、IP 封锁等手段限制爬虫,维护成本高。

四、开发建议与工具推荐

  1. 优先使用官方 API:合规性高、数据稳定,避免法律风险。

  2. 接口调试工具

    • 平台自带调试工具(如淘宝开放平台 “API 测试工具”)。
    • Postman:快速验证请求参数和签名。
  3. Python 库推荐

    • requests:发送 HTTP 请求。
    • pandas:数据清洗与存储。
    • redis:缓存 API 调用结果,减少重复请求。
  4. 注意调用限制:各平台对 API 调用频率(如淘宝单 AppKey 每秒 5 次)、并发数有严格限制,需做好限流控制。

总结

基于 Python 的电商数据采集应以官方开放 API为核心方案,需熟悉平台接口规则、签名机制及权限申请流程。非官方爬虫仅可用于个人学习,且需严格遵守平台协议和法律法规。实际开发中需注重代码健壮性(如异常处理、重试机制)和数据合规性,避免因滥用导致账号封禁或法律风险。