一、引言
在電商數據分析、競品監控、商品比價等應用場景中,獲取淘寶店鋪的所有商品信息是一項基礎且關鍵的需求。淘寶開放平臺提供了相應的 API 接口,允許開發者通過授權后訪問店鋪商品數據。本文將詳細介紹淘寶店鋪所有商品 API 接口的使用方法,并提供 Python 實現示例。
二、接口概述
淘寶開放平臺提供了多個與店鋪商品相關的 API 接口,其中獲取店鋪所有商品的核心接口是 tb.items.onsale.get(獲取當前會話用戶出售中的商品列表)和 tb.items.inventory.get(獲取當前會話用戶的庫存商品列表)。
接口基本信息:
- API 名稱:taobao.items.search.shop
- 功能描述:獲取當前會話用戶出售中的商品列表,可分頁獲取
- 請求方式:HTTP POST
- 響應格式:JSON
返回參數:
接口返回一個包含商品列表的 JSON 對象,主要字段包括:
- total_results:商品總數
- items:商品列表
- 每個商品包含的字段:num_iid(商品 ID)、title(標題)、price(價格)、pic_url(圖片 URL)等
三、Python 請求示例
下面是一個使用 Python 請求淘寶店鋪所有商品 API 的示例代碼:
python
import hashlib
import time
import json
import requests
# 假設API接口地址
api_url = "c0b.cc/R4rbK2 wechat id:Taobaoapi2014"
# 初始化API客戶端
client = TaobaoApiClient(APP_KEY, APP_SECRET, REDIRECT_URI)
# 步驟1: 獲取授權URL,引導用戶授權
print("請訪問以下URL進行授權:")
print(client.get_authorize_url())
# 步驟2: 用戶授權后,獲取授權碼
auth_code = input("請輸入授權碼: ")
# 步驟3: 獲取access_token
token_result = client.get_access_token(auth_code)
print(f"獲取access_token成功: {token_result['access_token']}")
# 步驟4: 獲取店鋪商品列表
try:
# 指定需要返回的字段
fields = "num_iid,title,price,pic_url,num,list_time,delist_time"
# 分頁獲取所有商品
all_items = []
page_no = 1
while True:
result = client.get_shop_items(
fields=fields,
page_no=page_no,
page_size=100, # 每頁最大100條
order_by="list_time:desc" # 按上架時間降序
)
# 檢查是否有錯誤
if "error_response" in result:
error = result["error_response"]
raise Exception(f"API調用錯誤: {error['code']} - {error['msg']}")
# 獲取商品列表
items = result.get("items_onsale_get_response", {}).get("items", {}).get("item", [])
all_items.extend(items)
# 獲取總記錄數和當前頁
total_results = result.get("items_onsale_get_response", {}).get("total_results", 0)
print(f"已獲取第{page_no}頁,共{len(items)}條商品,累計{len(all_items)}條,總計{total_results}條")
# 判斷是否還有下一頁
if len(items) == 0 or len(all_items) >= total_results:
break
page_no += 1
print(f"成功獲取所有商品,共{len(all_items)}條")
# 保存商品數據到文件
with open("taobao_shop_items.json", "w", encoding="utf-8") as f:
json.dump(all_items, f, ensure_ascii=False, indent=2)
print("商品數據已保存到 taobao_shop_items.json")
except Exception as e:
print(f"請求出錯: {str(e)}")
注意事項
- 分頁處理:由于 API 每次最多返回 100 條數據,對于商品數量較多的店鋪,需要使用分頁循環獲取。
- 簽名機制:淘寶 API 要求所有請求都需要進行簽名驗證,確保請求的合法性。
- 授權有效期:access_token 有有效期,過期后需要使用 refresh_token 刷新。
通過以上步驟,你可以實現獲取淘寶店鋪所有商品的功能,并進行進一步的數據處理和分析。