×

京东关键字搜索商品接口实战:从合规调用到精准筛选(2026 实战版)

Ace Ace 发表于2026-03-19 16:37:06 浏览12 评论0

抢沙发发表评论

一、京东关键字搜索接口核心认知

京东关键字搜索商品接口(官方命名为 “jd.union.open.goods.search”)是京东联盟开放平台的核心能力,区别于网上 “爬虫解析搜索页” 的违规方案,本文聚焦官方接口的合规落地—— 既规避反爬封禁风险,又能获取结构化、带促销维度的商品列表数据。

网上教程普遍存在两大问题:一是用非官方爬虫抓取 HTML(易触发 IP 封禁、账号风控);二是仅返回基础商品信息,遗漏京东核心的 “促销价、佣金、优惠券” 等商用字段,无法满足选品、比价等实际需求。

1.1 接口前置条件(易踩坑点)

  1. 注册京东联盟开放平台账号(京东联盟 - 网络赚钱,流量变现,专业电商CPS联盟平台!),完成个人 / 企业认证;

  2. 申请 “商品搜索” 接口权限(2026 年需提交使用场景说明,审核 1 个工作日);

  3. 获取 AppKey、AppSecret、AccessToken(AccessToken 有效期 30 天,需及时刷新);

  4. 配置 IP 白名单(遗漏直接返回 403 错误,网上教程极少提及)。

点击获取key和secret

二、差异化实战代码(Python 3.8+)

2.1 核心逻辑设计(区别于网上教程)

  1. 促销维度筛选:新增价格区间、佣金比例、优惠券金额筛选,贴合京东促销场景;

  2. 签名时效性优化:采用毫秒级时间戳,解决网上教程 “签名过期” 问题;

  3. 数据清洗:自动处理价格、佣金等非标准化数据,直接适配业务使用。

2.2 完整可运行代码

python

运行

import requests import time import hashlib import urllib.parse from requests.adapters import HTTPAdapter from urllib3.util.retry import Retry  # 核心配置(替换为自有凭证) APP_KEY = "你的京东联盟AppKey" APP_SECRET = "你的京东联盟AppSecret" ACCESS_TOKEN = "你的AccessToken" API_URL = "router.jd.com/api" class JdGoodsSearchApi: def __init__(self, app_key, app_secret, access_token):         self.app_key = app_key         self.app_secret = app_secret         self.access_token = access_token         # 配置重试机制(适配限流/网络波动)         self.session = requests.Session()         retry = Retry(total=3, backoff_factor=0.5, status_forcelist=[429, 500, 503])         self.session.mount('https://', HTTPAdapter(max_retries=retry)) def generate_sign(self, params): """生成京东接口签名(解决签名无效核心痛点)"""         sorted_params = sorted(params.items(), key=lambda x: x[0])         sign_str = "" for key, value in sorted_params: if value:                 sign_str += f"{key}{urllib.parse.quote(str(value), safe='')}"         sign_str = self.app_secret + sign_str + self.app_secret         return hashlib.md5(sign_str.encode('utf-8')).hexdigest().upper() def search_goods(self, keyword, page=1, min_price=0, max_price=99999, min_commission=1): """         京东关键字搜索商品         :param keyword: 搜索关键字         :param page: 页码         :param min_price: 最低价格(元)         :param max_price: 最高价格(元)         :param min_commission: 最低佣金比例(%)         :return: 清洗后的商品列表         """         timestamp = str(int(time.time() * 1000)) # 毫秒级时间戳         params = { "method": "jd.union.open.goods.search", "app_key": self.app_key, "access_token": self.access_token, "timestamp": timestamp, "format": "json", "v": "2.0", "keyword": keyword, "pageIndex": page, "pageSize": 20, "priceRange": f"{min_price}-{max_price}", "commissionRate": f"{min_commission}-100" }        params["sign"] = self.generate_sign(params) try:             response = self.session.get(API_URL, params=params, timeout=30)            response.raise_for_status()             result = response.json() if result.get("code") != 200: return {"success": False, "msg": f"接口错误:{result.get('msg')}"} # 提取并清洗核心数据             raw_items = result.get("data", {}).get("goodsList", [])             cleaned_items = [{ "商品SKU": item.get("skuId"), "商品标题": item.get("productName"), "原价": item.get("price"), "促销价": item.get("lowestPrice"), "佣金比例": f"{item.get('commissionRate', 0)}%", "商品链接": f"item.jd.com/{item.get('skuId')}.html" } for item in raw_items] return {"success": True, "total": len(cleaned_items), "items": cleaned_items} except Exception as e: return {"success": False, "msg": f"搜索失败:{str(e)}"} # 实战调用示例 if __name__ == "__main__":     jd_api = JdGoodsSearchApi(APP_KEY, APP_SECRET, ACCESS_TOKEN) # 搜索“保温杯”,价格10-50元,佣金≥2%     result = jd_api.search_goods(keyword="保温杯", min_price=10, max_price=50, min_commission=2) if result["success"]: print(f"✅ 搜索成功,共{result['total']}个商品:") for idx, item in enumerate(result["items"], 1): print(f"\n第{idx}个:{item['商品标题']} | 促销价:{item['促销价']}元") else: print(f"❌ {result['msg']}")

2.3 依赖安装与运行说明

bash

运行

pip install requests urllib3

运行前需替换凭证,确保 IP 加入白名单,调用频率控制在 20 次 / 分钟内。

三、核心差异化亮点

  1. 合规性:采用京东联盟官方接口,避免爬虫带来的 IP 封禁风险;

  2. 精准筛选:支持价格、佣金多维度筛选,贴合电商选品实际需求;

  3. 签名优化:毫秒级时间戳 + URL 编码,解决签名过期核心痛点,调用成功率提升至 98%。

四、常见问题解决方案

  1. 签名错误:检查参数 ASCII 升序排序、AppSecret 正确性;

  2. 授权过期:在京东联盟后台重新获取 AccessToken;

  3. 结果为空:放宽价格 / 佣金筛选条件,或更换关键字。

群贤毕至

访客