当前位置: 首页 > news >正文

京东平台商品关键字搜索接口调用指南:Python代码实现与实战解析

以下是京东平台商品关键字搜索接口的Python代码实现与实战解析,帮助您快速调用API并获取数据:

一、京东开放平台API调用指南

1. 核心API接口

接口名称功能描述
JD.item_search按关键字搜索商品,返回标题、价格、销量、图片链接等(支持分页、价格筛选)
JD.item_get获取指定商品详情(需商品ID)
2. API调用流程

(1)注册开发者账号

  • 访问https://open.jd.com/,完成实名认证,创建应用并获取App KeyApp Secret(接口调用凭证)。

(2)构建请求参数

  • 公共参数
    • method: 接口名称(如JD.item_search
    • app_key: 您的App Key
    • timestamp: 时间戳(格式:YYYY-MM-DD HH:MM:SS
    • v: API版本号(如1.0
    • sign_method: 签名算法(如md5
    • access_token: 访问令牌(需通过京东OAuth接口获取)
  • 业务参数(以JD.item_search为例):
    • keyword: 搜索关键词(如手机
    • pageIndex: 页码
    • pageSize: 每页数量

(3)生成签名(Sign)

  • 步骤
    1. 将所有请求参数按参数名字典序排序
    2. 拼接成字符串:key1value1key2value2...
    3. 在字符串末尾加上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)

三、实战解析

  1. 获取访问令牌(Access Token)
    • 调用京东OAuth接口,使用App Key和App Secret获取access_token(有效期30天)。
  2. 处理分页
    • 通过pageIndexpageSize参数实现分页查询,遍历所有商品数据。
  3. 错误处理
    • 检查HTTP状态码,处理网络异常、API限流等错误。
  4. 数据解析
    • 从JSON响应中提取商品字段(如skuNameprice),按需存储或分析。

四、常见问题

  1. Q:如何获取App Key和App Secret?
    • A:登录https://open.jd.com/,进入“控制台”创建应用,审核通过后获取。
  2. Q:API返回数据为空怎么办?
    • A:检查关键词是否有效,确认App Key权限是否包含目标API,调整pageIndexpageSize参数。
  3. Q:签名生成失败怎么办?
    • A:检查参数排序和拼接是否正确,确保使用MD5算法并转为大写。

通过以上指南,您可快速实现京东商品数据的合规采集与分析。建议优先使用官方API,若需高效采集可结合工具,但务必遵守平台政策。

相关文章:

  • WinForm真入门(4)——Lable控件详解
  • C++设计模式-责任链模式:从基本介绍,内部原理、应用场景、使用方法,常见问题和解决方案进行深度解析
  • 【Azure】不同构建环境如何正确设置环境变量及故障排查
  • Java 中的继承与多态:面向对象编程的核心特性
  • 可视化开发:用Qt实现Excel级动态柱状图
  • Leetcode hot 100(day 2)
  • 类加载过程?类隔离了解过吗?
  • 如何在WordPress中强制用户使用强密码?
  • 基于springboot的英语学习平台(springboot+ssm+html+mysql)含运行文档
  • 8.neo4j图数据库python操作
  • C语言:指针数组、函数、二级指针
  • ⏳ waitpid() 函数解析
  • Windows11,微软软件(VSCODE/EDG)错误登录,0x80190001错误
  • 小了 60,500 倍,但更强;AI 的“深度诅咒”
  • DeepSeek技术架构解析:MLA多头潜在注意力
  • 汽车诊断开发入门以及OBD检测
  • 【学Rust写CAD】21 2D 点(point.rs)
  • Vue中将pdf文件转为图片
  • LabVIEW永磁同步电机性能测试系统
  • MyBatis--#{}和${}
  • 雅典卫城上空现“巨鞋”形状无人机群,希腊下令彻查
  • 一周文化讲座|“我的生命不过是温柔的疯狂”
  • 体坛联播|巴萨提前2轮西甲夺冠,郑钦文不敌高芙止步4强
  • 郑钦文憾负高芙,止步WTA1000罗马站四强
  • 浙江省台州市政协原副主席林虹被“双开”
  • 普京召开俄乌谈判筹备会议,拉夫罗夫、绍伊古等出席