京东平台提供了强大的商品搜索API接口,开发者可通过关键词获取商品列表、价格、销量等核心数据。以下是完整的实践方案:
一、API基础信息
使用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手机
五、关键注意事项
1001:参数缺失 → 检查必填字段
1004:签名错误 → 验证appSecret和加密逻辑
1010:调用频次超限 → 控制请求速率(默认100次/分钟)
六、应用场景
比价系统开发
竞品监控分析
商品推荐引擎
供应链库存预警
通过合理利用分页参数和排序规则,可高效获取海量商品数据,为电商生态开发提供强大支撑。