?
在電商系統(tǒng)開發(fā)或數(shù)據(jù)分析場景中,有時需要批量獲取淘寶店鋪的所有商品信息。淘寶開放平臺(Taobao Open Platform)提供了豐富的API接口供開發(fā)者使用,其中就包含獲取店鋪商品的接口。本文將詳細(xì)介紹如何使用這個接口。
一、接口概述
淘寶開放平臺提供了 taobao.items.list.get (或其他類似名稱/功能) 的API,用于查詢指定賣家的商品列表。通過此接口,開發(fā)者可以獲取店鋪商品的詳細(xì)信息,如商品ID、標(biāo)題、價格、圖片鏈接、庫存狀態(tài)等。
核心功能點:
按賣家(店鋪)維度查詢商品
支持分頁獲取,應(yīng)對商品數(shù)量大的情況
可篩選在線狀態(tài)(在售、倉庫中、售罄等)
返回豐富的商品基礎(chǔ)信息
二、準(zhǔn)備工作
在調(diào)用API前,需要完成以下步驟:
注冊淘寶開放平臺賬號: 訪問淘寶開放平臺官網(wǎng),注冊成為開發(fā)者。
創(chuàng)建應(yīng)用: 登錄開發(fā)者控制臺,創(chuàng)建一個新的應(yīng)用。創(chuàng)建成功后,系統(tǒng)會分配給你三個關(guān)鍵憑證:
App Key:應(yīng)用的唯一標(biāo)識。
App Secret:用于簽名驗證的密鑰,務(wù)必保密。
Access Token:代表用戶授權(quán)訪問資源的令牌。獲取店鋪商品通常需要賣家(店鋪主)授權(quán)你的應(yīng)用,授權(quán)成功后即可獲得此Token。具體授權(quán)流程(如OAuth 2.0)請參考開放平臺文檔。
查閱API文檔: 在開放平臺文檔中心找到 獲取商品列表 或功能描述相似的API文檔。仔細(xì)閱讀其請求地址(URL)、請求方式(GET/POST)、必需的請求參數(shù)、可選參數(shù)以及返回結(jié)果的字段說明和數(shù)據(jù)結(jié)構(gòu)(通常是JSON格式)。
三、調(diào)用接口詳解
假設(shè)我們已獲得有效的 App Key, App Secret, Access Token,并且目標(biāo)店鋪的賣家 nick 或 seller_id 已知。
1. 基本請求參數(shù)
調(diào)用接口時,以下參數(shù)通常是必需的:
method: API方法名,例如 taobao.item.list.get。
app_key: 你的應(yīng)用 App Key。
session: 或 access_token,填寫你獲得的 Access Token。
timestamp: 請求發(fā)起的時間戳(格式如 yyyy-MM-dd HH:mm:ss)。
format: 響應(yīng)格式,通常為 json。
v: API版本號,如 2.0。
sign_method: 簽名方法,如 hmac。
fields: 指定需要返回的商品字段列表,用逗號分隔。例如:num_iid,title,price,pic_url,approve_status。請根據(jù)文檔選擇所需字段。
seller_id 或 nick: 指定要查詢的店鋪賣家的用戶ID或昵稱。
page_no: 當(dāng)前頁碼(從1開始)。
page_size: 每頁返回的商品數(shù)量(最大值需參照文檔,通常不超過100)。
2. 生成簽名(Sign)
淘寶API要求對請求參數(shù)進行簽名驗證以防止篡改。簽名生成步驟一般如下:
排序: 將所有請求參數(shù)(包括 app_key, method, timestamp 等公共參數(shù)和 seller_id, fields 等業(yè)務(wù)參數(shù),不包括 sign 本身)按照參數(shù)名的字典序升序排列。
拼接: 將排序后的參數(shù)名和參數(shù)值用 = 連接,參數(shù)對之間用 & 連接,形成一個長字符串。例如:app_key=123&fields=num_iid,title&method=taobao.item.list.get&...。
加密: 在拼接好的字符串前面加上你的 App Secret,后面也加上你的 App Secret,然后使用指定的簽名方法(如 hmac,對應(yīng)算法可能是 HMAC-SHA256)進行加密。
編碼: 將加密得到的字節(jié)流進行Base64編碼或十六進制轉(zhuǎn)換(具體看文檔要求),得到最終的 sign 值。
注意: 簽名算法是安全調(diào)用的關(guān)鍵,務(wù)必嚴(yán)格按照文檔實現(xiàn)。
3. 發(fā)送請求
將包含所有參數(shù)(包括計算得到的 sign)的請求發(fā)送到淘寶API的網(wǎng)關(guān)地址(如 https://eco.taobao.com/router/rest)。請求方式一般為 POST。
4. 處理響應(yīng)
API會返回一個JSON格式的響應(yīng)。需要關(guān)注的關(guān)鍵字段通常包括:
items_list_get_response: 或類似名稱,表示響應(yīng)的根節(jié)點。
items: 包含商品列表的數(shù)組。數(shù)組中的每個元素是一個商品對象,包含你在 fields 參數(shù)中指定的字段及其值。
total_results: 符合條件的商品總數(shù)(用于分頁計算總頁數(shù))。
request_id: 請求的唯一ID,可用于排查問題。
code: 返回碼。0 通常表示成功,非 0 表示錯誤(需根據(jù)文檔查閱錯誤原因)。
msg: 返回消息,成功時為 null 或空字符串,失敗時為錯誤描述。
分頁處理: 如果 total_results 大于 page_size,則需要循環(huán)調(diào)用接口,遞增 page_no 參數(shù),直到獲取所有商品。
四、Python 示例代碼
以下是一個簡化的Python示例,使用 requests 庫調(diào)用API并處理分頁(注意:需自行實現(xiàn)簽名函數(shù) generate_sign 和替換真實參數(shù)值):
import requests import time import hashlib import hmac import base64 def generate_sign(params, app_secret): # 1. 參數(shù)排序 (按key升序) sorted_params = sorted(params.items()) # 2. 拼接鍵值對 (key=value&...) query_str = '&'.join([f'{k}={v}' for k, v in sorted_params]) # 3. 前后加Secret, 使用HMAC-SHA256加密 (示例, 具體算法看文檔要求) sign_str = app_secret + query_str + app_secret signature = hmac.new(app_secret.encode('utf-8'), sign_str.encode('utf-8'), hashlib.sha256).digest() # 4. Base64編碼 (示例) return base64.b64encode(signature).decode('utf-8') # 你的應(yīng)用信息 APP_KEY = 'your_app_key' APP_SECRET = 'your_app_secret' ACCESS_TOKEN = 'your_access_token' # API基礎(chǔ)信息 API_URL = 'https://eco.taobao.com/router/rest' METHOD = 'taobao.item.list.get' # 替換為實際API方法名 VERSION = '2.0' # 請求參數(shù) (基礎(chǔ) + 業(yè)務(wù)) base_params = { 'method': METHOD, 'app_key': APP_KEY, 'session': ACCESS_TOKEN, 'timestamp': time.strftime('%Y-%m-%d %H:%M:%S', time.localtime()), 'format': 'json', 'v': VERSION, 'sign_method': 'hmac', # 根據(jù)文檔選擇 } business_params = { 'fields': 'num_iid,title,price,pic_url,approve_status', # 所需字段 'seller_id': 'target_seller_id', # 目標(biāo)店鋪賣家ID 'page_no': 1, 'page_size': 100, # 每頁數(shù)量 (按文檔最大值設(shè)置) } all_items = [] page_no = 1 total_pages = None while True: # 合并參數(shù) current_params = {**base_params, **business_params, 'page_no': page_no} # 生成簽名 sign = generate_sign(current_params, APP_SECRET) current_params['sign'] = sign # 發(fā)送POST請求 response = requests.post(API_URL, data=current_params) resp_data = response.json() # 檢查響應(yīng) if 'error_response' in resp_data: code = resp_data['error_response']['code'] msg = resp_data['error_response']['msg'] print(f"API調(diào)用失敗! Code: {code}, Msg: {msg}") break # 獲取響應(yīng)數(shù)據(jù) (注意根據(jù)實際API返回結(jié)構(gòu)解析, 這里假設(shè)結(jié)構(gòu)) try: result = resp_data[f"{METHOD.replace('.', '_')}_response"] # 假設(shè)響應(yīng)根節(jié)點是方法名轉(zhuǎn)換 items = result.get('items', []) total = result.get('total_results', 0) all_items.extend(items) # 計算總頁數(shù) (如果是第一頁) if total_pages is None: total_pages = (total + business_params['page_size'] - 1) // business_params['page_size'] # 判斷是否還有下一頁 if page_no >= total_pages: break page_no += 1 except KeyError as e: print(f"解析響應(yīng)數(shù)據(jù)出錯: {e}") print(resp_data) break print(f"成功獲取店鋪商品總數(shù): {len(all_items)}") # 處理你的商品數(shù)據(jù) all_items...

五、注意事項
權(quán)限與授權(quán): 確保應(yīng)用已獲得賣家授權(quán),并且應(yīng)用的權(quán)限范圍包含商品信息讀取。
調(diào)用頻率限制: 淘寶API對調(diào)用頻率有嚴(yán)格限制(QPS),請遵守開放平臺的限流規(guī)則,避免觸發(fā)限流導(dǎo)致調(diào)用失敗。需要在代碼中做好流量控制(如添加延時)。
參數(shù)準(zhǔn)確性: 嚴(yán)格按照文檔要求傳遞參數(shù),特別是 fields、seller_id 等關(guān)鍵參數(shù)。
簽名安全: App Secret 是核心機密,不能在客戶端或日志中暴露。簽名算法必須正確實現(xiàn)。
錯誤處理: 代碼中應(yīng)包含完善的錯誤處理邏輯,處理網(wǎng)絡(luò)異常、API返回錯誤、數(shù)據(jù)解析失敗等情況。
文檔更新: API接口和規(guī)則可能會更新,務(wù)必定期查閱最新的開放平臺官方文檔。
通過遵循上述步驟和注意事項,開發(fā)者可以穩(wěn)定可靠地利用淘寶開放平臺API獲取店鋪的所有商品數(shù)據(jù),為后續(xù)的商品管理、數(shù)據(jù)分析等業(yè)務(wù)提供支持。
?
審核編輯 黃宇
-
API
+關(guān)注
關(guān)注
2文章
2444瀏覽量
66953
發(fā)布評論請先 登錄
如何通過1688開放平臺API獲取指定店鋪所有商品
調(diào)用1688開放平臺商品分類API獲取分類數(shù)據(jù)
淘寶商品列表API使用指南
1688店鋪所有商品API使用指南
技術(shù)解析:如何通過淘寶開放平臺API獲取商品券后價
調(diào)用淘寶開放平臺API獲取店鋪所有商品列表
評論