一、核心API接口選擇
接口名稱 | 功能描述 | 適用場景 |
---|---|---|
taobao.items.search | 通過關鍵詞搜索商品,支持分頁、排序,返回商品列表(含標題、價格、銷量、圖片等) | 普通商品搜索、競品監控、數據分析 |
taobao.tbk.item.get | 淘寶客API,返回含傭金信息的商品數據(需綁定淘寶客賬號) | 推廣返利類應用、傭金分析 |
taobao.item.search_shop | 通過店鋪ID獲取商品,支持分頁(用戶需求聚焦關鍵詞,故作為補充) | 店鋪商品全量獲取、競品店鋪分析 |
二、調用流程詳解
1. 注冊與認證
- 步驟:
- 訪問淘寶開放平臺注冊開發者賬號,完成實名認證。
- 創建應用,選擇類型為“自用型”或“他用型”,提交審核后獲取AppKey和AppSecret。
- 在應用詳情頁申請接口權限(如
taobao.items.search
或taobao.tbk.item.get
)。
2. 簽名生成方法
- 步驟:
- 將所有請求參數(除
sign
外)按字母升序排列。 - 拼接參數名和參數值,首尾各追加
AppSecret
。 - 對拼接字符串進行MD5加密并轉為大寫。
- 將所有請求參數(除
- 示例代碼(Python):
python
def generate_sign(params, app_secret):
sorted_params = sorted(params.items())
sign_str = app_secret + ''.join(f"{k}{v}" for k, v in sorted_params if k != 'sign') + app_secret
return hashlib.md5(sign_str.encode('utf-8')).hexdigest().upper()
3. 請求構造
必填參數:
參數名 示例值 描述 method
taobao.items.search
API接口名稱 app_key
YOUR_APP_KEY
應用AppKey timestamp
2025-08-30 10:00:00
時間戳(GMT+8) format
json
響應格式 v
2.0
API協議版本 sign_method
md5
簽名算法 業務參數:
參數名 示例值 描述 q
手機
搜索關鍵詞 page_no
1
當前頁碼 page_size
10
每頁商品數量 sort
price_asc
排序方式(價格升序)
三、返回數據解析
1. 基礎字段說明
字段名 | 示例值 | 描述 |
---|---|---|
num_iid | 123456789 | 商品唯一ID |
title | 夏季新款連衣裙 | 商品標題 |
price | 199.00 | 當前售價 |
original_price | 299.00 | 原價 |
pic_url | https://img.alicdn.com/xxx.jpg | 商品主圖URL |
sales | 200 | 30天銷量 |
detail_url | https://item.taobao.com/item.htm?id=123456789 | 商品詳情頁鏈接 |
2. 排序與分頁
- 排序:通過
sort
參數實現,支持price_asc
(價格升序)、price_desc
(價格降序)、sales
(銷量)。 - 分頁:通過
page_no
和page_size
控制,示例:python
for page in range(1, total_pages + 1):
data = api.search_items(keyword, page_no=page)
3. 特殊場景字段(淘寶客API)
字段名 | 示例值 | 描述 |
---|---|---|
tk_rate | 12.34 | 傭金比率(百分比) |
coupon_info | 滿99減10 | 優惠券信息 |
zk_final_price | 88.00 | 折扣后價格 |
四、完整代碼示例(Python)
python
import requests |
import hashlib |
import time |
class TaobaoAPI: |
def __init__(self, app_key, app_secret): |
self.app_key = app_key |
self.app_secret = app_secret |
self.api_url = "https://eco.taobao.com/router/rest" |
def generate_sign(self, params): |
sorted_params = sorted(params.items()) |
sign_str = self.app_secret + ''.join(f"{k}{v}" for k, v in sorted_params if k != 'sign') + self.app_secret |
return hashlib.md5(sign_str.encode()).hexdigest().upper() |
def search_items(self, keyword, page_no=1, page_size=40): |
params = { |
"method": "taobao.items.search", |
"app_key": self.app_key, |
"timestamp": time.strftime("%Y-%m-%d %H:%M:%S"), |
"format": "json", |
"v": "2.0", |
"sign_method": "md5", |
"q": keyword, |
"page_no": page_no, |
"page_size": page_size, |
"fields": "num_iid,title,price,original_price,pic_url,sales,detail_url" |
} |
params["sign"] = self.generate_sign(params) |
response = requests.get(self.api_url, params=params) |
return response.json() |
# 使用示例 |
if __name__ == "__main__": |
api = TaobaoAPI("YOUR_APP_KEY", "YOUR_APP_SECRET") |
data = api.search_items("手機", page_no=1, page_size=10) |
print(data) |
五、注意事項
- 頻率限制:普通應用每分鐘≤100次,需合理設計分頁邏輯,避免頻繁請求。
- 數據合規:禁止爬取敏感信息(如用戶隱私),需遵守淘寶開放平臺協議。
- 錯誤處理:
- 檢查返回碼(如
200
表示成功),處理簽名錯誤、參數缺失等問題。 - 示例錯誤響應:
json
{
"error_response": {
"code": "1001",
"msg": "參數缺失"
}
}
- 檢查返回碼(如
- 數據更新:商品信息可能延遲,重要場景需結合實時數據或官方推送服務。
六、替代方案
- 無淘寶客權限:使用第三方數據服務(需注意合法性)。
- 瀏覽器自動化:模擬用戶行為(不推薦,違反淘寶規則)。
通過以上步驟,可高效利用淘寶API實現商品關鍵詞搜索及數據獲取。