在電商數據分析、用戶體驗優化和競品分析中,獲取商品評論是一項重要的功能。淘寶開放平臺提供了商品評論的 API 接口,允許開發者通過合法的方式獲取商品的用戶評論數據。本文將詳細介紹如何使用 Python 調用淘寶商品評論 API 接口,并解析返回的數據。
一、淘寶商品評論接口簡介
淘寶開放平臺提供了 taobao.traderate.items.get 接口,用于獲取商品的評論數據。該接口支持分頁查詢,可以獲取用戶的評分、評論內容、評論時間等信息。開發者需要在淘寶開放平臺注冊賬號并創建應用,獲取 App Key 和 App Secret,用于身份驗證和簽名生成。
二、Python 示例代碼解析
以下是一個完整的 Python 示例代碼,展示如何調用淘寶商品評論 API 接口并解析返回的數據。
1. 準備工作
在開始之前,請確保你已經:
- 在淘寶開放平臺注冊賬號并創建應用,獲取 App Key 和 App Secret。
- 閱讀了淘寶開放平臺的接口文檔,了解請求參數和返回值的結構。
2. 示例代碼
import requests
import hashlib
import time
import urllib.parse
# 淘寶開放平臺相關信息
APP_KEY = 'your_app_key' # 替換為你的 App Key
APP_SECRET = 'your_app_secret' # 替換為你的 App Secret
METHOD = 'taobao.traderate.items.get' # 接口名稱
FORMAT = 'json' # 返回數據格式
V = '2.0' # API 版本
SIGN_METHOD = 'hmac' # 簽名方法
# 業務參數
PARAMS = {
'item_id': '1234567890', # 商品 ID
'page_no': '1', # 頁碼
'page_size': '10' # 每頁顯示的評論數量
}
# 生成簽名函數
def generate_sign(params, app_secret):
"""
生成簽名
:param params: 請求參數(字典格式)
:param app_secret: 應用的 App Secret
:return: 簽名字符串
"""
sorted_params = sorted(params.items())
query_string = '&'.join(['{0}={1}'.format(urllib.parse.quote(k), urllib.parse.quote(v)) for k, v in sorted_params])
base_string = f"{app_secret}&{query_string}"
sign = hashlib.md5(base_string.encode('utf-8')).hexdigest().upper()
return sign
# 構造請求參數
def get_request_params(app_key, app_secret, method, params):
"""
構造請求參數
:param app_key: 應用的 App Key
:param app_secret: 應用的 App Secret
:param method: 接口名稱
:param params: 業務參數
:return: 完整的請求參數
"""
timestamp = str(int(time.time() * 1000)) # 時間戳(毫秒)
full_params = {
'app_key': app_key,
'method': method,
'timestamp': timestamp,
'v': V,
'format': FORMAT,
'sign_method': SIGN_METHOD,
**params
}
full_params['sign'] = generate_sign(full_params, app_secret)
return full_params
# 獲取商品評論
def get_item_reviews(app_key, app_secret, item_id, page_no=1, page_size=10):
"""
獲取商品評論
:param app_key: 應用的 App Key
:param app_secret: 應用的 App Secret
:param item_id: 商品 ID
:param page_no: 頁碼
:param page_size: 每頁顯示的評論數量
:return: 評論數據
"""
params = {
'item_id': item_id,
'page_no': page_no,
'page_size': page_size
}
request_params = get_request_params(app_key, app_secret, METHOD, params)
url = 'https://eco.taobao.com/router/rest'
response = requests.get(url, params=request_params)
if response.status_code == 200:
result = response.json()
if 'trade_rate_items_get_response' in result:
comments = result['trade_rate_items_get_response']['rate_list']['rate']
return comments
else:
print("調用失敗:", result.get('error_response', {}).get('msg'))
else:
print("請求失敗,狀態碼:", response.status_code)
return None
# 測試代碼
if __name__ == "__main__":
item_id = '1234567890' # 替換為商品 ID
comments = get_item_reviews(APP_KEY, APP_SECRET, item_id)
if comments:
for comment in comments:
print(f"用戶:{comment['user_nick']}")
print(f"評分:{comment['score']}")
print(f"評論內容:{comment['content']}")
print(f"評論時間:{comment['rate_date']}")
print("-" * 40)
else:
print("未能獲取評論數據,請檢查商品 ID 或參數是否正確。")
三、代碼解析
- 生成簽名簽名是調用淘寶 API 的關鍵步驟。通過 generate_sign 函數,我們將請求參數按字典順序排序并拼接成字符串,然后在前面加上 App Secret,最后使用 MD5 算法生成簽名。
- 構造請求參數在 get_request_params 函數中,我們構造了所有必要的請求參數,包括 app_key、method、timestamp、sign 等。
- 發送請求使用 requests.get 方法發送請求,并解析返回的 JSON 數據。如果請求成功,返回商品評論數據;如果失敗,打印錯誤信息。
- 處理返回數據淘寶返回的評論數據是一個 JSON 格式的列表,包含用戶昵稱、評分、評論內容、評論時間等字段。
四、注意事項
- 時間戳格式時間戳必須是毫秒級的時間戳,格式為 int(time.time() * 1000)。
- 簽名方法簽名方法必須與接口要求一致(通常是 MD5),并且簽名字符串的拼接規則必須嚴格遵守。
- 請求頻率限制淘寶 API 有調用頻率限制,開發者需要合理安排請求頻率,避免因頻繁調用導致賬號被限制。
- 數據隱私評論數據涉及用戶隱私,開發者需遵守相關法律法規,合理使用數據。
五、總結
通過上述代碼,我們成功實現了使用 Python 調用淘寶商品評論 API 接口并獲取評論數據的功能。開發者可以根據實際需求對代碼進行擴展,例如批量獲取多個商品的評論、分析評論內容的情感傾向等。希望本文的示例代碼和解析能夠幫助你更好地理解和使用淘寶 API 接口。
如遇任何疑問或有進一步的需求,請隨時與我私信或者評論聯系。