京东商品详情API调用教程:Python 30行代码搞定商品数据采集
一、为什么我劝你别再自己写爬虫
做比价、选品、店铺分析、竞品监控的朋友,大概率都经历过这条血泪路:
写个爬虫抓京东商品页 → 跑两天还行;
某天突然全是滑块验证、
risk风控页面、请求被限流;换 IP、调 headers、解滑块……花的时间比业务本身还多;
页面改版,XPath/CSS 选择器全部失效,又要重写。
核心问题:爬虫是"对抗",数据接口是"合作"。
使用正规的商品详情数据API(由服务商对接平台官方授权数据通道),好处很直接:
稳定:不会因为页面改版就挂;
合规:走授权数据源,规避法律风险;
省事:一个接口返回结构化字段,不用自己解析 HTML;
数据全:标题、价格、主图、SKU规格、销量、店铺信息一次拿齐。
二、准备工作
对接京东商品详情API,你需要: 点此申请appkey
| 项 | 说明 |
|---|---|
| AppKey / AppSecret | 向 API 服务商申请,用于身份认证与签名 |
| 接口地址 | 如 https://api.你的服务商域名.com/jd/item/get(以实际文档为准) |
| item_id | 京东商品ID,即商品URL中 http://item.jd.com/100012043978.html 的 100012043978 |
本文代码为通用演示写法,不同服务商的域名、字段名、签名算法略有差异,请以你所接入服务商的 API 文档为准。
三、核心代码:约30行搞定
import time
import hashlib
import requests
APP_KEY = "你的AppKey"
APP_SECRET = "你的AppSecret"
API_URL = "https://api.你的服务商域名.com/jd/item/get"
def sign(params: dict) -> str:
"""参数排序拼接 + 密钥做MD5签名(算法以文档为准)"""
text = "&".join(f"{k}={params[k]}" for k in sorted(params))
text += "&key=" + APP_SECRET
return hashlib.md5(text.encode("utf-8")).hexdigest()
def get_jd_item(item_id: str) -> dict:
params = {
"app_key": APP_KEY,
"timestamp": str(int(time.time())),
"item_id": item_id,
}
params["sign"] = sign(params)
resp = requests.get(API_URL, params=params, timeout=10).json()
if resp.get("code") != 0:
raise RuntimeError(f"接口异常: {resp}")
return resp["data"] # 核心商品数据
if __name__ == "__main__":
data = get_jd_item("100012043978") # 换成你要采集的商品ID
print("标题:", data["title"])
print("价格:", data["price"])
print("主图:", data["images"][0])
print("SKU数:", len(data["skus"]))
for sku in data["skus"][:3]: # 打印前3个规格
print(" ", sku["name"], "->", sku["price"])以上核心逻辑就是:拼参数 → 签名 → 请求 → 解析返回,约30行。批量采集只需在外面套一层循环 + 限速,即可做成自己的选品库。
四、返回数据长什么样
接口返回为 JSON,核心字段示例如下(演示结构):
{
"code"
:
0
,
"data"
:
{
"item_id"
:
"100012043978"
,
"title"
:
"商品标题"
,
"price"
:
99.00
,
"origin_price"
:
129.00
,
"images"
:
[
"主图URL1"
,
"主图URL2"
]
,
"category"
:
"手机配件"
,
"shop_name"
:
"店铺名称"
,
"skus"
:
[
{
"sku_id"
:
"1"
,
"name"
:
"黑色"
,
"price"
:
99.00
,
"stock"
:
500
}
]
,
"sales"
:
12000
}
}| 字段 | 含义 | 常见用途 |
|---|---|---|
| title | 商品标题 | 上架、比价 |
| price / origin_price | 现价 / 原价 | 价格监控、利润测算 |
| images | 主图列表 | 独立站/店铺上架素材 |
| skus | 规格明细(ID/名称/价格/库存) | 下单对接、库存同步 |
| sales | 销量 | 选品判断 |
| shop_name | 店铺名 | 供应商评估 |
五、使用中要注意什么
频控:API 有 QPS 上限,批量采集要加
time.sleep()限速,超限会被限流或封 Key;价格实时性:部分类目价格会随促销变动,做"价格监控"时请以接口返回的实时字段为准,建议缓存 + 定期刷新策略;
字段按需申请:销量、评价等敏感字段可能需要单独开通权限,先和客服确认;
错误码处理:常见
code有参数错误、签名错误、无权限、频控超限,开发时要逐一映射成可读日志,方便排查。
六、写在最后
一句话总结:与其花两周时间维护一个随时可能失效的爬虫,不如用 30 行代码对接商品详情API,把精力省下来放在选品和运营上。
目前市面上有提供京东(及淘宝/天猫/1688/拼多多等)商品数据 API 的服务商,一般都支持按量付费 + 免费测试额度,接入前先测试几个商品,确认字段和数据质量再决定。
如果你也在做电商数据采集或选品工具,欢迎在评论区聊聊你踩过的反爬坑,或在私信里交流接口选型经验。


