淘寶通過(guò)關(guān)鍵詞API獲取商品列表的核心操作需結(jié)合淘寶開(kāi)放平臺(tái)(TOP)的接口規(guī)范,以下是分步驟詳解及關(guān)鍵注意事項(xiàng):
一、接口選擇與權(quán)限獲取
接口類型
taobao.item.search:基礎(chǔ)商品搜索接口,支持關(guān)鍵詞、類目、價(jià)格區(qū)間等條件。
taobao.tbk.item.get(淘寶客API):適用于推廣場(chǎng)景,返回商品傭金信息。
taobao.items.onsale.get:獲取指定店鋪的在售商品(需店鋪ID)。
權(quán)限申請(qǐng)
注冊(cè)淘寶開(kāi)放平臺(tái)賬號(hào),創(chuàng)建應(yīng)用并申請(qǐng)接口權(quán)限。
部分接口需高級(jí)權(quán)限(如商品搜索),需提交資質(zhì)審核。
二、接口調(diào)用流程
1. 請(qǐng)求參數(shù)構(gòu)造
以taobao.item.search為例,核心參數(shù):
json
{
"method":"taobao.item.search",
"app_key":"你的AppKey",
"timestamp":"2025-06-20 10:00:00",
"sign_method":"md5",
"v":"2.0",
"q":"手機(jī)",// 關(guān)鍵詞(必填)
"page_no":1,// 頁(yè)碼(可選,默認(rèn)1)
"page_size":40,// 每頁(yè)數(shù)量(可選,默認(rèn)40)
"sort":"sale-desc",// 排序方式(可選,如銷量降序)
"start_price":1000,// 最低價(jià)(可選)
"end_price":5000// 最高價(jià)(可選)
}
2. 簽名生成
按淘寶簽名規(guī)則,將參數(shù)按字典序排序后拼接密鑰,生成MD5簽名:
python
importhashlib
defgenerate_sign(params, app_secret):
sorted_params =sorted(params.items(), key=lambdax: x[0])
string_to_sign = app_secret +''.join([f"{k}{v}"fork, vinsorted_params]) + app_secret
returnhashlib.md5(string_to_sign.encode()).hexdigest().upper()
3. 發(fā)送HTTP請(qǐng)求
使用requests庫(kù)發(fā)送GET請(qǐng)求:
python
importrequests
url ="https://eco.taobao.com/router/rest"
params = {
"method":"taobao.item.search",
"app_key":"你的AppKey",
"timestamp":"2025-06-20 10:00:00",
"v":"2.0",
"q":"手機(jī)",
"page_no":1,
"page_size":40
}
params["sign"] = generate_sign(params,"你的AppSecret")
response = requests.get(url, params=params)
print(response.json())
成功響應(yīng)示例:
json
{
"item_search_response":{
"total_results":1234,
"items":{
"item":[
{
"num_iid":123456789,
"title":"iPhone 15 Pro",
"price":"8999",
"pic_url":"https://img.alicdn.com/xxx.jpg",
"nick":"蘋果官方旗艦店",
"volume":1000// 銷量
}
]
}
}
}
四、關(guān)鍵注意事項(xiàng)
頻率限制
淘寶API有調(diào)用頻率限制(如每秒10次),超限需申請(qǐng)?zhí)岣吲漕~或使用緩存。
數(shù)據(jù)時(shí)效性
商品價(jià)格、庫(kù)存可能實(shí)時(shí)變化,需結(jié)合業(yè)務(wù)場(chǎng)景處理(如緩存+定時(shí)刷新)。
錯(cuò)誤處理
常見(jiàn)錯(cuò)誤碼:isv.invalid-parameter(參數(shù)錯(cuò)誤)、isv.out-of-service(服務(wù)不可用)。
需實(shí)現(xiàn)重試機(jī)制和日志記錄。
字段權(quán)限
部分字段(如傭金比例)需淘寶客API權(quán)限,需在申請(qǐng)時(shí)明確。
合規(guī)性
禁止爬蟲(chóng)行為,所有請(qǐng)求需通過(guò)API密鑰簽名驗(yàn)證。
五、高級(jí)應(yīng)用場(chǎng)景
分頁(yè)與大數(shù)據(jù)量處理
通過(guò)page_no和page_size分頁(yè)獲取,結(jié)合total_results計(jì)算總頁(yè)數(shù)。
多條件組合
示例:搜索“華為手機(jī)”,價(jià)格區(qū)間2000-4000,按銷量排序:
python
params = {
"q":"華為手機(jī)",
"start_price":2000,
"end_price":4000,
"sort":"sale-desc"
}
接口聯(lián)動(dòng)
獲取商品ID后,可調(diào)用taobao.item.get獲取詳情(如SKU、描述)。
六、代碼示例(完整流程)
python
importrequests
importhashlib
importtime
classTaobaoAPI:
def__init__(self, app_key, app_secret):
self.app_key = app_key
self.app_secret = app_secret
self.base_url ="https://eco.taobao.com/router/rest"
defgenerate_sign(self, params):
sorted_params =sorted(params.items(), key=lambdax: x[0])
string_to_sign =self.app_secret +''.join([f"{k}{v}"fork, vinsorted_params]) +self.app_secret
returnhashlib.md5(string_to_sign.encode()).hexdigest().upper()
defsearch_items(self, keyword, page_no=1, page_size=40):
params = {
"method":"taobao.item.search",
"app_key":self.app_key,
"timestamp": time.strftime("%Y-%m-%d %H:%M:%S"),
"v":"2.0",
"q": keyword,
"page_no": page_no,
"page_size": page_size
}
params["sign"] =self.generate_sign(params)
response = requests.get(self.base_url, params=params)
returnresponse.json()
# 使用示例
api = TaobaoAPI("你的AppKey","你的AppSecret")
result = api.search_items("手機(jī)", page_no=1, page_size=10)
print(result)
通過(guò)以上步驟,可實(shí)現(xiàn)淘寶商品列表的關(guān)鍵詞搜索。建議結(jié)合業(yè)務(wù)需求優(yōu)化分頁(yè)、排序和錯(cuò)誤處理邏輯,并定期關(guān)注淘寶開(kāi)放平臺(tái)的接口文檔更新。