你想要獲取京東關(guān)鍵詞相關(guān)的 API 接口,以此替代傳統(tǒng)爬蟲,更合規(guī)、穩(wěn)定地獲取商品列表等信息,我會先講解官方合規(guī)的 API 獲取與使用方式(推薦),再說明非官方接口的情況(僅供學(xué)習(xí)),并給出具體的調(diào)用示例。
一、核心前提說明
京東沒有向普通個人用戶開放免費(fèi)的關(guān)鍵詞搜索 API,所有合法可用的接口均需通過「京東開放平臺」申請,且多數(shù)接口要求企業(yè)資質(zhì),同時有調(diào)用頻率限制和費(fèi)用規(guī)則;非官方的第三方接口存在合規(guī)性、穩(wěn)定性風(fēng)險,僅建議用于技術(shù)學(xué)習(xí)。
二、京東開放平臺(官方合規(guī) API)
這是獲取京東關(guān)鍵詞相關(guān)數(shù)據(jù)的唯一合法途徑,適合商用或合規(guī)的開發(fā)場景。
1. 京東開放平臺入口
官網(wǎng)地址:https://open.jd.com/home/home#/index
2. 官方 API 申請與使用流程(分步詳解)
步驟 1:注冊開發(fā)者賬號
進(jìn)入開放平臺后,點(diǎn)擊「注冊」→ 選擇「開發(fā)者注冊」;
「個人開發(fā)者」:僅能申請部分測試接口,商用功能(如商品搜索)受限;
「企業(yè)開發(fā)者」:需提供營業(yè)執(zhí)照、法人信息等資質(zhì),審核通過后可申請商用接口(推薦合規(guī)場景使用)。
步驟 2:創(chuàng)建應(yīng)用,獲取核心憑證
賬號登錄后,進(jìn)入「應(yīng)用管理」→「創(chuàng)建應(yīng)用」,填寫應(yīng)用名稱、用途、回調(diào)地址等信息;
應(yīng)用審核通過后,可在「應(yīng)用詳情」頁獲?。?/p>
AppKey:應(yīng)用唯一標(biāo)識(調(diào)用 API 時必填);
AppSecret:應(yīng)用密鑰(用于生成 API 簽名,需嚴(yán)格保密)。
步驟 3:對接商品搜索相關(guān) API
京東開放平臺中,與「關(guān)鍵詞搜索商品」匹配的核心接口是:
接口名稱:jingdong.union.open.goods.promotion.query(京東聯(lián)盟商品搜索接口);
核心功能:根據(jù)關(guān)鍵詞、分類、價格區(qū)間等條件查詢商品信息(含標(biāo)題、價格、傭金、鏈接等);
權(quán)限要求:需先入駐「京東聯(lián)盟」(https://union.jd.com/),再在開放平臺綁定聯(lián)盟賬號。
步驟 4:Python 調(diào)用官方 API 示例(完整可運(yùn)行)
官方 API 調(diào)用的核心是簽名生成(京東采用 MD5 簽名防篡改),以下是簡化示例:
python
運(yùn)行
import requests
import hashlib
import time
import json
class JdOfficialAPI:
def __init__(self, app_key, app_secret):
self.app_key = app_key # 替換為你的AppKey
self.app_secret = app_secret # 替換為你的AppSecret
self.base_url = "https://router.jd.com/api" # 京東API網(wǎng)關(guān)固定地址
def _generate_sign(self, params):
"""生成API簽名(京東API必填,規(guī)則必須嚴(yán)格遵循)"""
# 1. 按參數(shù)名ASCII升序排序
sorted_params = sorted(params.items(), key=lambda x: x[0])
# 2. 拼接簽名字符串(AppSecret + 參數(shù)名值對 + AppSecret)
sign_str = self.app_secret
for k, v in sorted_params:
if v: # 跳過空值參數(shù)
sign_str += f"{k}{v}"
sign_str += self.app_secret
# 3. MD5加密并轉(zhuǎn)大寫
sign = hashlib.md5(sign_str.encode("utf-8")).hexdigest().upper()
return sign
def search_goods(self, keyword, page=1, page_size=20):
"""
調(diào)用京東聯(lián)盟商品搜索API
:param keyword: 搜索關(guān)鍵詞
:param page: 頁碼(從1開始)
:param page_size: 每頁商品數(shù)(最大20)
:return: 商品列表字典,失敗返回None
"""
# 1. 構(gòu)造基礎(chǔ)參數(shù)(接口要求的固定參數(shù))
params = {
"method": "jingdong.union.open.goods.promotion.query", # 接口方法名
"app_key": self.app_key,
"format": "json", # 返回格式(固定為json)
"v": "1.0", # 接口版本(固定為1.0)
"timestamp": time.strftime("%Y-%m-%d %H:%M:%S"), # 北京時間戳
"page_index": page, # 頁碼
"page_size": page_size, # 每頁條數(shù)
"keyword": keyword # 搜索關(guān)鍵詞
}
# 2. 生成簽名并添加到參數(shù)中
params["sign"] = self._generate_sign(params)
# 3. 發(fā)送請求
try:
response = requests.get(self.base_url, params=params, timeout=10)
result = response.json()
# 校驗(yàn)調(diào)用結(jié)果
if result.get("code") == 0:
return result.get("data", {}) # 返回商品數(shù)據(jù)
else:
print(f"API調(diào)用失?。簕result.get('msg')}(錯誤碼:{result.get('code')})")
return None
except Exception as e:
print(f"請求異常:{str(e)}")
return None
# 調(diào)用示例
if __name__ == "__main__":
# 替換為你從開放平臺獲取的真實(shí)憑證
APP_KEY = "你的AppKey"
APP_SECRET = "你的AppSecret"
# 初始化API對象
jd_api = JdOfficialAPI(APP_KEY, APP_SECRET)
# 調(diào)用關(guān)鍵詞搜索接口
goods_data = jd_api.search_goods(keyword="Python編程", page=1, page_size=20)
if goods_data:
print("獲取到的商品數(shù)據(jù):")
print(json.dumps(goods_data, ensure_ascii=False, indent=2))
步驟 5:官方 API 關(guān)鍵注意事項(xiàng)
權(quán)限申請:商品搜索接口屬于「京東聯(lián)盟」權(quán)限,需先入駐京東聯(lián)盟并綁定開放平臺賬號;
調(diào)用限制:官方 API 有 QPS(每秒調(diào)用次數(shù))限制(通常 10 次 / 秒),超出會被限流;
費(fèi)用規(guī)則:接口本身免費(fèi),但商品推廣傭金需按京東聯(lián)盟規(guī)則分成,部分高級接口按調(diào)用量收費(fèi);
簽名規(guī)則:簽名是調(diào)用成功的核心,參數(shù)必須 ASCII 升序排序、MD5 加密后轉(zhuǎn)大寫,否則會直接調(diào)用失敗。
三、非官方 API 接口(僅供學(xué)習(xí))
非官方接口是第三方開發(fā)者基于爬蟲封裝的 API,無需企業(yè)資質(zhì),但風(fēng)險極高,僅適合個人技術(shù)學(xué)習(xí)。
1. 核心風(fēng)險說明
合規(guī)性:未經(jīng)京東授權(quán),使用此類接口違反京東用戶協(xié)議,商用可能被追責(zé);
穩(wěn)定性:接口隨時可能失效(京東反爬升級 / 第三方服務(wù)器關(guān)停);
安全性:可能泄露你的請求數(shù)據(jù),或被植入惡意代碼。
2. 非官方 API 調(diào)用示例(僅學(xué)習(xí))
python
運(yùn)行
import requests
import json
def get_jd_goods_unofficial(keyword, page=1):
"""
非官方京東商品搜索API調(diào)用(示例,接口可能已失效)
"""
# 替換為開源/口碑較好的非官方API地址
url = "https://api.example.com/jd/search"
params = {
"keyword": keyword,
"page": page,
"page_size": 20,
"token": "test_token" # 部分非官方API需臨時token
}
try:
response = requests.get(url, params=params, timeout=10)
if response.status_code == 200:
return response.json()
else:
print(f"調(diào)用失敗,狀態(tài)碼:{response.status_code}")
return None
except Exception as e:
print(f"請求異常:{str(e)}")
return None
# 學(xué)習(xí)用調(diào)用示例
if __name__ == "__main__":
data = get_jd_goods_unofficial("Python編程", page=1)
if data:
print(json.dumps(data, ensure_ascii=False, indent=2))
3. 學(xué)習(xí)用注意事項(xiàng)
切勿將非官方 API 用于商業(yè)項(xiàng)目;
優(yōu)先選擇 GitHub 開源的非官方 API 項(xiàng)目(可自查代碼安全性),避免未知來源的接口;
調(diào)用頻率控制在「幾分鐘 1 次」,避免給第三方服務(wù)器造成壓力。
審核編輯 黃宇
-
API
+關(guān)注
關(guān)注
2文章
2481瀏覽量
67060 -
京東
+關(guān)注
關(guān)注
2文章
1130瀏覽量
50143
發(fā)布評論請先 登錄
關(guān)鍵詞搜索京東列表 API 技術(shù)對接指南
京東關(guān)鍵詞的應(yīng)用
平衡接入京東關(guān)鍵詞API利弊的核心策略
接入京東關(guān)鍵詞API的核心利弊分析
京東關(guān)鍵詞API帶來的收益
使用京東關(guān)鍵詞搜索接口獲取商品數(shù)據(jù)的實(shí)操指南
京東關(guān)鍵詞 API 場景的需求梳理模板
京東關(guān)鍵詞的應(yīng)用場景
京東關(guān)鍵詞搜索接口獲取商品數(shù)據(jù)的實(shí)操指南
京東關(guān)鍵詞API賦能
京東關(guān)鍵詞item_search-按關(guān)鍵字搜索京東商品
利用京東搜索關(guān)鍵詞 API 接口賦能電商運(yùn)營
淺談京東關(guān)鍵詞
京東關(guān)鍵詞搜索商品列表的Python爬蟲實(shí)戰(zhàn)
搜索關(guān)鍵詞獲取商品詳情接口的設(shè)計(jì)與實(shí)現(xiàn)
京東關(guān)鍵詞API接口獲取
評論