利用淘宝API获取商品评论数据

3 阅读4分钟

在电商数据分析和用户行为研究中,商品评论是极其宝贵的资源。淘宝作为国内领先的电商平台,提供了开放平台API供合规开发者获取数据。本文将介绍如何通过淘宝开放平台API获取指定商品的评论信息。

核心概念

  1. 淘宝开放平台:提供一系列API接口,允许开发者接入淘宝的数据和服务。
  2. API权限:获取评论数据通常需要申请相应的API权限,并创建应用获取 App KeyApp Secret
  3. OAuth2.0授权:调用涉及用户或商家数据的API,需要经过授权流程获取访问令牌 Access Token
  4. 商品评论API:淘宝开放平台提供了如 taobao.item.reviews.get 等接口用于获取评论。

实现步骤

  1. 准备阶段

    • 注册淘宝开放平台开发者账号。
    • 创建应用,获取 App KeyApp Secret
    • 在应用控制台申请 商品评论 相关的API权限。
  2. 授权认证

    • 引导用户(或商家)通过OAuth2.0流程授权你的应用访问其数据。

    • 获取授权后的 Access Token。示例授权URL结构:

      https://oauth.taobao.com/authorize?response_type=code&client_id=YOUR_APP_KEY&redirect_uri=YOUR_REDIRECT_URI&state=optional_state
      

    • 使用 code 换取 Access Token

  3. 构造API请求

    • API名称:确定要调用的评论API,如 taobao.item.reviews.get

    • 请求参数:关键参数包括:

      • fields: 指定需要返回的评论字段,如 rate_content, created, result 等。
      • num_iid: 目标商品的数字ID。
      • page_no: 当前页码。
      • page_size: 每页显示的评论条数。
      • rate_type: 可选,评论类型(好、中、差评)。
    • 签名:根据淘宝API签名规则,使用 App Secret 对所有请求参数进行签名生成 sign 参数。

    • 公共参数:包含 app_key, sign, timestamp, v (API版本), format (响应格式如json), session (即 Access Token)。

  4. 发送请求与处理响应

    • 使用HTTP GET或POST请求调用API网关地址。
    • 解析返回的JSON数据。

Python 示例代码

import requests
import hashlib
import time
import urllib.parse

# 你的应用信息
APP_KEY = 'YOUR_APP_KEY'
APP_SECRET = 'YOUR_APP_SECRET'
ACCESS_TOKEN = 'USER_ACCESS_TOKEN'  # 通过OAuth2.0获取

# 目标商品ID
NUM_IID = '1234567890'

# API基本配置
API_URL = 'https://eco.taobao.com/router/rest'
API_METHOD = 'taobao.item.reviews.get'
VERSION = '2.0'
FORMAT = 'json'
TIMESTAMP = str(int(time.time()))

# 构建业务参数
business_params = {
    'fields': 'tid,oid,role,nick,result,created,rated_content,rated_pic_urls',
    'num_iid': NUM_IID,
    'page_no': '1',
    'page_size': '20'
}

# 构建公共参数
public_params = {
    'method': API_METHOD,
    'app_key': APP_KEY,
    'timestamp': TIMESTAMP,
    'v': VERSION,
    'format': FORMAT,
    'sign_method': 'md5',
    'session': ACCESS_TOKEN
}

# 合并所有参数并按Key排序
all_params = {**public_params, **business_params}
sorted_params = sorted(all_params.items())

# 生成待签名字符串
query_string = urllib.parse.urlencode(sorted_params)
sign_string = APP_SECRET + query_string + APP_SECRET

# 计算MD5签名
md5 = hashlib.md5()
md5.update(sign_string.encode('utf-8'))
sign = md5.hexdigest().upper()

# 添加签名到请求参数
all_params['sign'] = sign

# 发送API请求
response = requests.get(API_URL, params=all_params)
data = response.json()

# 处理响应
if 'item_reviews_get_response' in data:
    reviews = data['item_reviews_get_response']['reviews']
    print(f"获取到 {len(reviews['review'])} 条评论:")
    for review in reviews['review']:
        print(f"评论内容: {review['rated_content']}")
        print(f"评论时间: {review['created']}")
        print(f"评价结果: {review['result']} (好评: {'good' in review['result']})")
        print("-" * 50)
else:
    print("请求失败:", data)

关键点解析

  1. 签名 (sign) : 是保证请求合法性的关键。务必按照官方文档正确生成。
  2. 访问令牌 (session) : 代表了用户或商家的授权,请妥善保管,避免泄露。
  3. 分页参数 (page_no, page_size) : 对于大量评论,需要循环调用API翻页获取所有数据。
  4. 字段选择 (fields) : 根据需求选择所需字段,避免请求不必要的数据,提高效率。
  5. 错误处理: 检查响应中是否包含预期的字段(如 item_reviews_get_response),并处理可能的错误码(如无效令牌、权限不足等)。

注意事项

  • 遵守规则: 严格遵循淘宝开放平台的API调用频率限制和内容使用规范。
  • 用户隐私: 获取的评论数据可能包含用户信息,务必注意数据脱敏和隐私保护,遵守相关法律法规。
  • API更新: 淘宝API可能会更新,请关注官方文档以获取最新的接口信息和参数要求。
  • 数据用途: 确保你的数据使用方式符合淘宝开放平台的协议规定。

通过淘宝开放平台API获取商品评论,为市场分析、用户反馈挖掘、产品质量监控等提供了强大的数据支持。希望这篇分享能帮助你开始利用这一宝贵的数据源。务必合规、合法、负责任地使用数据。