京东平台商品关键字搜索接口调用指南:Python代码实现与实战解析
以下是京东平台商品关键字搜索接口的Python代码实现与实战解析,帮助您快速调用API并获取数据:
一、京东开放平台API调用指南
1. 核心API接口
接口名称 | 功能描述 |
---|---|
JD.item_search | 按关键字搜索商品,返回标题、价格、销量、图片链接等(支持分页、价格筛选) |
JD.item_get | 获取指定商品详情(需商品ID) |
2. API调用流程
(1)注册开发者账号
- 访问https://open.jd.com/,完成实名认证,创建应用并获取App Key和App Secret(接口调用凭证)。
(2)构建请求参数
- 公共参数:
method
: 接口名称(如JD.item_search
)app_key
: 您的App Keytimestamp
: 时间戳(格式:YYYY-MM-DD HH:MM:SS
)v
: API版本号(如1.0
)sign_method
: 签名算法(如md5
)access_token
: 访问令牌(需通过京东OAuth接口获取)
- 业务参数(以
JD.item_search
为例):keyword
: 搜索关键词(如手机
)pageIndex
: 页码pageSize
: 每页数量
(3)生成签名(Sign)
- 步骤:
- 将所有请求参数按参数名字典序排序。
- 拼接成字符串:
key1value1key2value2...
。 - 在字符串末尾加上App Secret,进行MD5加密,结果转为大写。
- 示例代码(Python):
python复制代码
import hashlib
import time
import json
def generate_sign(app_secret, params):
sorted_params = sorted(params.items(), key=lambda x: x[0])
param_str = ''.join([f"{k}{v}" for k, v in sorted_params])
param_str += app_secret
return hashlib.md5(param_str.encode()).hexdigest().upper()
# 示例参数
params = {
'method': 'JD.item_search',
'app_key': 'your_app_key',
'timestamp': time.strftime('%Y-%m-%d %H:%M:%S'),
'v': '1.0',
'sign_method': 'md5',
'access_token': 'your_access_token',
'param_json': json.dumps({
'keyword': '手机',
'pageIndex': 1,
'pageSize': 10
})
}
app_secret = 'your_app_secret'
sign = generate_sign(app_secret, params)
params['sign'] = sign
(4)发送HTTP请求
- 使用
GET
方法调用API,接收JSON格式响应。 - 示例响应字段:
json复制代码
{
"jd_union_open_goods_query_responce": {
"queryResult": {
"goodsList": [
{
"skuId": "123456",
"skuName": "商品标题",
"price": "1999.00",
"imageUrl": "图片链接",
"shopName": "店铺名称"
}
]
}
}
}
3. 注意事项
- 频率限制:API调用需控制频率,避免触发限流(具体限制参考https://open.jd.com/)。
- 数据安全:保护App Key和App Secret,避免泄露。
- 合规使用:禁止采集用户隐私数据,仅用于合法商业分析。
二、Python代码实现
python复制代码
import requests | |
import hashlib | |
import time | |
import json | |
def search_jd_items(keyword, app_key, app_secret, access_token): | |
url = "https://api.jd.com/routerjson" | |
params = { | |
'method': 'JD.item_search', | |
'app_key': app_key, | |
'timestamp': time.strftime('%Y-%m-%d %H:%M:%S'), | |
'v': '1.0', | |
'sign_method': 'md5', | |
'access_token': access_token, | |
'param_json': json.dumps({ | |
'keyword': keyword, | |
'pageIndex': 1, | |
'pageSize': 10 | |
}) | |
} | |
# 生成签名 | |
sign = generate_sign(app_secret, params) | |
params['sign'] = sign | |
# 发送请求 | |
response = requests.get(url, params=params) | |
if response.status_code == 200: | |
data = response.json() | |
items = data.get("jd_union_open_goods_query_responce", {}).get("queryResult", {}).get("goodsList", []) | |
for item in items: | |
print(f"商品名称: {item.get('skuName')}") | |
print(f"商品价格: {item.get('price')}") | |
print(f"商品图片: {item.get('imageUrl')}") | |
print(f"店铺名称: {item.get('shopName')}") | |
else: | |
print(f"请求失败, 状态码: {response.status_code}") | |
# 调用示例(需替换真实凭证) | |
app_key = 'your_app_key' | |
app_secret = 'your_app_secret' | |
access_token = 'your_access_token' | |
search_jd_items('手机', app_key, app_secret, access_token) |
三、实战解析
- 获取访问令牌(Access Token):
- 调用京东OAuth接口,使用App Key和App Secret获取
access_token
(有效期30天)。
- 调用京东OAuth接口,使用App Key和App Secret获取
- 处理分页:
- 通过
pageIndex
和pageSize
参数实现分页查询,遍历所有商品数据。
- 通过
- 错误处理:
- 检查HTTP状态码,处理网络异常、API限流等错误。
- 数据解析:
- 从JSON响应中提取商品字段(如
skuName
、price
),按需存储或分析。
- 从JSON响应中提取商品字段(如
四、常见问题
- Q:如何获取App Key和App Secret?
- A:登录https://open.jd.com/,进入“控制台”创建应用,审核通过后获取。
- Q:API返回数据为空怎么办?
- A:检查关键词是否有效,确认App Key权限是否包含目标API,调整
pageIndex
和pageSize
参数。
- A:检查关键词是否有效,确认App Key权限是否包含目标API,调整
- Q:签名生成失败怎么办?
- A:检查参数排序和拼接是否正确,确保使用MD5算法并转为大写。
通过以上指南,您可快速实现京东商品数据的合规采集与分析。建议优先使用官方API,若需高效采集可结合工具,但务必遵守平台政策。