一、核心流程概述
京東通過SKU獲取商品詳情需通過京東開放平臺API實現(xiàn),流程分為以下步驟:
- 注冊與權(quán)限申請
- 選擇合適的API接口
- 構(gòu)造請求參數(shù)與簽名
- 發(fā)送請求并解析響應(yīng)
二、詳細(xì)步驟說明
1. 注冊與權(quán)限申請
- 注冊賬號:訪問京東開放平臺,完成企業(yè)或個人開發(fā)者注冊。
- 創(chuàng)建應(yīng)用:登錄后進(jìn)入“我的應(yīng)用”,填寫應(yīng)用名稱、描述等信息,提交審核。
- 獲取密鑰:審核通過后獲得
AppKey
和AppSecret
,用于API調(diào)用身份驗證。
2. 選擇API接口
根據(jù)需求選擇以下接口:
- 商品詳情接口:
jd.union.open.goods.query
- SKU專項接口:
jd.union.open.goods.skus.get
3. 構(gòu)造請求參數(shù)與簽名
- 必填參數(shù):
- 簽名生成步驟:
4. 發(fā)送請求與解析響應(yīng)
- 發(fā)送請求:pythonimport requestsurl = "https://api.jd.com/routerjson"response = requests.get(url, params=params)data = response.json()
- 響應(yīng)解析:成功時返回字段示例:json{ "code": "0", "result": { "skuId": "123456", "name": "商品名稱", "price": "99.90", "stock": 100 }}錯誤碼處理(如1001表示參數(shù)缺失):pythonif data['code'] != '0': print(f"錯誤碼: {data['code']}, 描述: {data['msg']}")
三、代碼示例(Python)
pythonimport requestsimport timeimport hashlibimport json class JDProductAPI: def __init__(self, app_key, app_secret): self.app_key = app_key self.app_secret = app_secret self.url = "https://api.jd.com/routerjson" def _sign(self, params): sorted_params = sorted(params.items(), key=lambda x: x[0]) sign_str = self.app_secret for k, v in sorted_params: sign_str += f"{k}{v}" sign_str += self.app_secret return hashlib.md5(sign_str.encode()).hexdigest().upper() def get_product_detail(self, sku_id): params = { "method": "jd.union.open.goods.query", "app_key": self.app_key, "timestamp": time.strftime("%Y-%m-%d %H:%M:%S"), "format": "json", "v": "1.0", "param_json": json.dumps({"skuIds": [sku_id]}) } params["sign"] = self._sign(params) response = requests.get(self.url, params=params) return response.json() # 使用示例if __name__ == "__main__": app_key = "YOUR_APP_KEY" app_secret = "YOUR_APP_SECRET" sku_id = "100032608854" jd_api = JDProductAPI(app_key, app_secret) result = jd_api.get_product_detail(sku_id) if result.get("code") == "0": product = result["result"]["wareInfo"] print(f"商品名稱: {product['name']}") print(f"價格: ¥{product['price']['p']}") print(f"庫存: {product['stock']['s']}件") else: print(f"請求失敗: {result.get('msg')}")
四、注意事項
- 頻率限制:默認(rèn)QPS為50次/秒,超限需申請?zhí)犷~或采用緩存策略。
- 數(shù)據(jù)實時性:價格和庫存數(shù)據(jù)分鐘級更新,適合實時監(jiān)控場景。
- 合規(guī)性:禁止爬取非官方接口,務(wù)必使用開放平臺API。
- 錯誤處理:需捕獲HTTP錯誤和API返回的錯誤碼,實現(xiàn)重試機(jī)制。
通過以上步驟,可高效、合法地通過SKU獲取京東商品詳情。