淘寶通過關鍵詞API獲取商品列表的核心操作需結合淘寶開放平臺(TOP)的接口規(guī)范,以下是分步驟詳解及關鍵注意事項:
一、接口選擇與權限獲取
接口類型
taobao.item.search:基礎商品搜索接口,支持關鍵詞、類目、價格區(qū)間等條件。
taobao.tbk.item.get(淘寶客API):適用于推廣場景,返回商品傭金信息。
taobao.items.onsale.get:獲取指定店鋪的在售商品(需店鋪ID)。
權限申請
注冊淘寶開放平臺賬號,創(chuàng)建應用并申請接口權限。
部分接口需高級權限(如商品搜索),需提交資質審核。
二、接口調用流程
1. 請求參數構造
以taobao.item.search為例,核心參數:
json
{
"method":"taobao.item.search",
"app_key":"你的AppKey",
"timestamp":"2025-06-20 10:00:00",
"sign_method":"md5",
"v":"2.0",
"q":"手機",// 關鍵詞(必填)
"page_no":1,// 頁碼(可選,默認1)
"page_size":40,// 每頁數量(可選,默認40)
"sort":"sale-desc",// 排序方式(可選,如銷量降序)
"start_price":1000,// 最低價(可選)
"end_price":5000// 最高價(可選)
}
2. 簽名生成
按淘寶簽名規(guī)則,將參數按字典序排序后拼接密鑰,生成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請求
使用requests庫發(fā)送GET請求:
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":"手機",
"page_no":1,
"page_size":40
}
params["sign"] = generate_sign(params,"你的AppSecret")
response = requests.get(url, params=params)
print(response.json())
三、響應數據解析
成功響應示例:
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// 銷量
}
]
}
}
}
四、關鍵注意事項
頻率限制
淘寶API有調用頻率限制(如每秒10次),超限需申請?zhí)岣吲漕~或使用緩存。
數據時效性
商品價格、庫存可能實時變化,需結合業(yè)務場景處理(如緩存+定時刷新)。
錯誤處理
常見錯誤碼:isv.invalid-parameter(參數錯誤)、isv.out-of-service(服務不可用)。
需實現重試機制和日志記錄。
字段權限
部分字段(如傭金比例)需淘寶客API權限,需在申請時明確。
合規(guī)性
禁止爬蟲行為,所有請求需通過API密鑰簽名驗證。
五、高級應用場景
分頁與大數據量處理
通過page_no和page_size分頁獲取,結合total_results計算總頁數。
多條件組合
示例:搜索“華為手機”,價格區(qū)間2000-4000,按銷量排序:
python
params = {
"q":"華為手機",
"start_price":2000,
"end_price":4000,
"sort":"sale-desc"
}
接口聯動
獲取商品ID后,可調用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("手機", page_no=1, page_size=10)
print(result)
通過以上步驟,可實現淘寶商品列表的關鍵詞搜索。建議結合業(yè)務需求優(yōu)化分頁、排序和錯誤處理邏輯,并定期關注淘寶開放平臺的接口文檔更新。