一、接口概述
京東店鋪所有商品 API 接口是京東開放平臺(tái)為開發(fā)者提供的一項(xiàng)關(guān)鍵服務(wù),旨在為其獲取特定店鋪內(nèi)的全部商品信息提供便捷途徑。借助這一接口,開發(fā)者只需提供店鋪的唯一標(biāo)識(shí)(通常為店鋪 ID),就能精準(zhǔn)定位并批量獲取該店鋪所售商品的豐富數(shù)。這些數(shù)據(jù)包含商品的基本屬性,如商品名稱、圖片鏈接、價(jià)格、庫(kù)存數(shù)量等;商品的詳細(xì)描述,有助于用戶深入了解商品特性;以及商品所屬的分類、品牌信息等。無論是用于電商數(shù)據(jù)分析、店鋪運(yùn)營(yíng)監(jiān)測(cè),還是構(gòu)建商品聚合平臺(tái),此接口都能為開發(fā)者提供不可或缺的數(shù)據(jù)支持。小編:Taobaoapi2014
二、接口特點(diǎn)
- 全面覆蓋:能夠一次性獲取指定店鋪下的所有商品信息,無需對(duì)每個(gè)商品進(jìn)行單獨(dú)請(qǐng)求,大大提高了數(shù)據(jù)獲取效率。這對(duì)于需要對(duì)店鋪整體商品情況進(jìn)行分析,如統(tǒng)計(jì)店鋪商品種類數(shù)量、計(jì)算商品平均價(jià)格等場(chǎng)景非常實(shí)用。
- 店鋪精準(zhǔn)定位:通過店鋪 ID 作為唯一索引,確保獲取的數(shù)據(jù)準(zhǔn)確無誤地來源于目標(biāo)店鋪。開發(fā)者可以輕松針對(duì)不同店鋪進(jìn)行數(shù)據(jù)采集和分析,無論是大型旗艦店還是小型特色店鋪,都能精準(zhǔn)獲取其商品數(shù)據(jù)。
- 實(shí)時(shí)數(shù)據(jù)更新:隨著京東店鋪內(nèi)商品的動(dòng)態(tài)變化,如新品上架、商品價(jià)格調(diào)整、庫(kù)存變動(dòng)等,該接口能夠?qū)崟r(shí)同步最新數(shù)據(jù)。開發(fā)者始終能獲取到店鋪商品的最新狀態(tài),為用戶提供及時(shí)、準(zhǔn)確的商品信息。據(jù)安全可靠的調(diào)用機(jī)制:京東開放平臺(tái)采用嚴(yán)格的安全措施保障接口的安全使用。通過 AppKey 和 AppSecret 進(jìn)行身份驗(yàn)證,并對(duì)請(qǐng)求進(jìn)行簽名處理,有效防止非法請(qǐng)求和數(shù)據(jù)泄露,確保接口調(diào)用的安全性和穩(wěn)定性,為開發(fā)者提供可靠的數(shù)據(jù)服務(wù)。
三、Python 請(qǐng)求示例
1. 安裝必要的庫(kù)
在使用 Python 調(diào)用京東店鋪所有商品 API 接口前,需安裝requests庫(kù)用于發(fā)送 HTTP 請(qǐng)求。若尚未安裝,可通過以下命令在命令行中安裝:
pip install requests
2. 構(gòu)造請(qǐng)求參數(shù)及簽名
假設(shè)已獲取到京東開放平臺(tái)分配的 AppKey 和 AppSecret,以獲取店鋪 ID 為 “123456” 的店鋪所有商品數(shù)據(jù)為例:
import requests
import hashlib
import time
import random
import string
def generate_sign(params, app_secret):
keys = sorted(params.keys())
query_string = ''
for key in keys:
query_string += key + str(params[key])
query_string += app_secret
sign = hashlib.md5(query_string.encode('utf - 8')).hexdigest().upper()
return sign
封裝好的第三方數(shù)據(jù)商平臺(tái)接口,復(fù)制鏈接獲取測(cè)試。
demo url=c0b.cc/R4rbK2 wechat id:Taobaoapi2014
app_key = 'your_app_key'
app_secret = 'your_app_secret'
接口地址
url = 'api.jd.com/routerjson'
請(qǐng)求參數(shù)
params = {
'app_key': app_key,
'method': 'jd.union.open.shop.goods.get', # 假設(shè)獲取店鋪商品的接口方法名
'timestamp': time.strftime('%Y-%m-%d %H:%M:%S', time.localtime()),
'format': 'json',
'v': '2.0',
'sign_method':'md5',
'shopId': '123456', # 店鋪ID
'page': 1, # 頁(yè)碼,當(dāng)商品數(shù)量較多時(shí)可能需分頁(yè)獲取
'pageSize': 50 # 每頁(yè)商品數(shù)量,可根據(jù)需求調(diào)整
}
生成簽名
sign = generate_sign(params, app_secret)
params['sign'] = sign
3. 發(fā)送請(qǐng)求并處理響應(yīng)
構(gòu)造好請(qǐng)求參數(shù)和簽名后,發(fā)送 HTTP 請(qǐng)求并處理返回的 JSON 數(shù)據(jù):
response = requests.post(url, data=params)
if response.status_code == 200:
result = response.json()
if result.get('code') == '0':
product_list = result.get('result').get('goodsList')
for product in product_list:
print(product.get('title'), product.get('price'), product.get('stockNum'))
else:
print('請(qǐng)求失敗,錯(cuò)誤信息:', result.get('msg'))
else:
print('請(qǐng)求失敗,狀態(tài)碼:', response.status_code)
上述代碼中,先定義了生成簽名的函數(shù)generate_sign,該函數(shù)遵循京東開放平臺(tái)的簽名規(guī)則,將請(qǐng)求參數(shù)與 AppSecret 拼接后進(jìn)行 MD5 加密生成簽名。接著設(shè)置了接口地址、請(qǐng)求參數(shù),生成簽名并添加到請(qǐng)求參數(shù)中。最后發(fā)送 POST 請(qǐng)求,若請(qǐng)求成功且返回狀態(tài)碼為 200,進(jìn)一步判斷返回結(jié)果中的業(yè)務(wù)狀態(tài)碼,若為 0 表示請(qǐng)求成功,可獲取并處理商品列表數(shù)據(jù);否則打印錯(cuò)誤信息。若請(qǐng)求失敗,打印出請(qǐng)求的狀態(tài)碼。當(dāng)?shù)赇伾唐窋?shù)量較多時(shí),可能需要通過循環(huán)調(diào)整page參數(shù)來分頁(yè)獲取所有商品數(shù)據(jù)。