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