电子说
京东平台提供了强大的商品搜索API接口,开发者可通过关键词获取商品列表、价格、销量等核心数据。以下是完整的实践方案:
一、API基础信息
接口地址
https://api.jd.com/routerjson

请求方式
POST(需携带签名参数)
认证机制
使用App Key和App Secret生成签名
签名算法:
$$ text{sign} = text{md5}(text{appSecret} + text{params} + text{appSecret}) $$
二、核心请求参数
| 参数名 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
| method | string | 是 | API方法名,如:jd.union.open.goods.query |
| keyword | string | 是 | 搜索关键词(需URL编码) |
| page_index | int | 否 | 分页页码,默认1 |
| page_size | int | 否 | 每页条数,默认20 |
| sort_name | string | 否 | 排序字段(如:price) |
三、响应数据结构示例
{
"code": 200,
"data": {
"total": 1200,
"goods_list": [
{
"skuId": "1000001",
"name": "华为Mate60 Pro 5G手机",
"price": 6999.00,
"commission": 300,
"comments": 50000,
"shop_name": "华为官方旗舰店"
}
]
}
}

四、Python调用示例
import requests
import hashlib
import urllib.parse
def jd_goods_search(keyword, page=1):
app_key = "YOUR_APP_KEY"
app_secret = "YOUR_APP_SECRET"
method = "jd.union.open.goods.query"
# 构造基础参数
params = {
"method": method,
"keyword": urllib.parse.quote(keyword),
"page_index": page,
"page_size": 20,
"sort_name": "price"
}
# 生成签名
param_str = "".join([f"{k}{v}" for k,v in sorted(params.items())])
sign = hashlib.md5((app_secret + param_str + app_secret).encode()).hexdigest()
params.update({"sign": sign, "app_key": app_key})
# 发送请求
response = requests.post("https://api.jd.com/routerjson", data=params)
return response.json() if response.status_code == 200 else None
# 调用示例
result = jd_goods_search("智能手机")
print(result["data"]["goods_list"][0]["name"]) # 输出:华为Mate60 Pro 5G手机

五、关键注意事项
关键词编码
必须使用urllib.parse.quote()处理中文关键词,避免乱码
错误码处理
1001:参数缺失 → 检查必填字段
1004:签名错误 → 验证appSecret和加密逻辑
1010:调用频次超限 → 控制请求速率(默认100次/分钟)
数据更新频率
商品价格实时更新,库存数据缓存周期为5分钟
六、应用场景
比价系统开发
竞品监控分析
商品推荐引擎
供应链库存预警
通过合理利用分页参数和排序规则,可高效获取海量商品数据,为电商生态开发提供强大支撑。
审核编辑 黄宇
全部0条评论
快来发表一下你的评论吧 !