python采集淘宝商品评论API,json数据返回

简介: 你需要的是一个基于 Python 的淘宝商品评论合规采集方案(通过阿里开放平台官方 API),该方案能调用淘宝官方评论接口并返回 JSON 格式数据,同时包含完整的签名认证、请求发送和数据解析逻辑。

你需要的是一个基于 Python 的淘宝商品评论合规采集方案(通过阿里开放平台官方 API),该方案能调用淘宝官方评论接口并返回 JSON 格式数据,同时包含完整的签名认证、请求发送和数据解析逻辑。

一、核心前提:淘宝评论 API 的合规接入基础

淘宝 / 天猫的商品评论数据,无公开免费的通用 API,合规获取需通过 开放平台(o0b.cn/anzexi) 完成以下准备:

  1. 账号认证:注册企业开发者账号并完成企业认证(个人账号无评论接口权限)。
  2. 权限申请:申请 taobao.tmall.review.get(天猫评论)或 taobao.item.review.get(淘宝评论)接口权限(仅对店铺商家开放,需绑定自有店铺)。
  3. 密钥获取:审核通过后获取 appkeyappsecretsessionkey(用户授权令牌)。
  4. 环境依赖:安装核心依赖库bash
    运行
pip install requests pycryptodome  # pycryptodome用于淘宝签名加密

二、完整 Python 代码示例(合规调用淘宝评论 API)

该代码严格遵循阿里开放平台的签名规则,调用官方 API 获取评论数据并返回 JSON 格式结果:

python

运行

import requests
import time
import json
import hashlib
import hmac
from urllib.parse import urlencode, quote
from typing import Dict, Any
class TaobaoCommentAPI:
    """淘宝开放平台评论API合规调用类"""
    def __init__(self, appkey: str, appsecret: str, sessionkey: str):
        self.appkey = appkey
        self.appsecret = appsecret
        self.sessionkey = sessionkey
        # 淘宝开放平台网关地址
        self.api_url = "https://eco.taobao.com/router/rest"
    def _generate_sign(self, params: Dict[str, Any]) -> str:
        """
        生成淘宝API签名(HMAC-MD5算法)
        :param params: 请求参数字典
        :return: 签名字符串
        """
        # 1. 按参数名ASCII升序排序
        sorted_params = sorted(params.items(), key=lambda x: x[0])
        # 2. 拼接为key=value格式(value需URL编码)
        sign_str = ""
        for k, v in sorted_params:
            sign_str += f"{k}{quote(str(v), safe='')}"
        # 3. 拼接appsecret并做HMAC-MD5加密
        sign = hmac.new(
            self.appsecret.encode("utf-8"),
            sign_str.encode("utf-8"),
            hashlib.md5
        ).hexdigest().upper()
        return sign
    def get_taobao_comment(self, item_id: str, page_no: int = 1, page_size: int = 20) -> Dict[str, Any]:
        """
        调用淘宝商品评论API(仅自有店铺商品)
        :param item_id: 商品ID(必须是自有店铺商品)
        :param page_no: 页码,默认1
        :param page_size: 每页条数,默认20(官方限制≤20)
        :return: JSON格式的评论数据
        """
        # 1. 构造基础请求参数
        params = {
            "method": "taobao.item.review.get",  # 淘宝评论接口方法名
            "app_key": self.appkey,
            "session": self.sessionkey,
            "timestamp": time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()),
            "format": "json",  # 指定返回格式为JSON
            "v": "2.0",  # API版本
            "sign_method": "hmac",  # 签名方式
            "item_id": item_id,
            "page_no": page_no,
            "page_size": page_size
        }
        # 2. 生成签名并添加到参数
        params["sign"] = self._generate_sign(params)
        try:
            # 3. 发送GET请求(淘宝API以GET为主)
            response = requests.get(self.api_url, params=params, timeout=15)
            response.raise_for_status()  # 抛出HTTP状态码异常
            # 4. 解析JSON响应并返回
            result = response.json()
            return result
        except requests.exceptions.HTTPError as e:
            return {"error": f"HTTP错误: {e}", "status_code": response.status_code}
        except requests.exceptions.Timeout:
            return {"error": "请求超时", "status_code": 408}
        except json.JSONDecodeError:
            return {"error": "返回数据非JSON格式", "response_text": response.text}
        except Exception as e:
            return {"error": f"未知错误: {str(e)}"}
    def get_tmall_comment(self, item_id: str, page_no: int = 1, page_size: int = 20) -> Dict[str, Any]:
        """
        调用天猫商品评论API(适配天猫店铺)
        :param item_id: 天猫商品ID
        :param page_no: 页码
        :param page_size: 每页条数
        :return: JSON格式的评论数据
        """
        params = {
            "method": "taobao.tmall.review.get",  # 天猫评论接口方法名
            "app_key": self.appkey,
            "session": self.sessionkey,
            "timestamp": time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()),
            "format": "json",
            "v": "2.0",
            "sign_method": "hmac",
            "item_id": item_id,
            "page_no": page_no,
            "page_size": page_size
        }
        params["sign"] = self._generate_sign(params)
        try:
            response = requests.get(self.api_url, params=params, timeout=15)
            response.raise_for_status()
            return response.json()
        except Exception as e:
            return {"error": f"天猫评论接口调用失败: {str(e)}"}
# -------------------------- 调用示例 --------------------------
if __name__ == "__main__":
    # 替换为你自己的认证信息(务必保密,禁止硬编码到公开代码)
    APP_KEY = "你的淘宝appkey"
    APP_SECRET = "你的淘宝appsecret"
    SESSION_KEY = "你的sessionkey"
    # 初始化API客户端
    taobao_api = TaobaoCommentAPI(APP_KEY, APP_SECRET, SESSION_KEY)
    # 调用淘宝评论接口(替换为自有店铺的商品ID)
    taobao_item_id = "1234567890"  # 淘宝商品ID
    taobao_comment_data = taobao_api.get_taobao_comment(
        item_id=taobao_item_id,
        page_no=1,
        page_size=20
    )
    # 打印JSON格式返回数据(格式化输出)
    print("淘宝评论API返回JSON数据:")
    print(json.dumps(taobao_comment_data, ensure_ascii=False, indent=4))
    # 解析核心评论数据(示例)
    if "item_review_get_response" in taobao_comment_data:
        reviews = taobao_comment_data["item_review_get_response"].get("reviews", {}).get("review", [])
        print(f"\n解析出{len(reviews)}条淘宝评论:")
        for idx, review in enumerate(reviews, 1):
            print(f"第{idx}条:")
            print(f"  评论内容:{review.get('content', '无')}")
            print(f"  评分:{review.get('star', 0)}星")
            print(f"  评论时间:{review.get('created', '无')}")
    # 调用天猫评论接口(可选)
    # tmall_item_id = "9876543210"
    # tmall_comment_data = taobao_api.get_tmall_comment(item_id=tmall_item_id)
    # print("\n天猫评论API返回JSON数据:")
    # print(json.dumps(tmall_comment_data, ensure_ascii=False, indent=4))

三、代码核心说明

  1. 签名生成_generate_sign方法严格遵循淘宝 API 的 HMAC-MD5 签名规则,这是 API 调用成功的核心(签名错误会返回invalid-signature错误)。
  2. 接口差异
  • 淘宝商品用 taobao.item.review.get 接口。
  • 天猫商品用 taobao.tmall.review.get 接口。
  • 两个接口参数基本一致,仅method字段不同。
  1. 参数限制
  • page_size:官方限制单页最多 20 条,超出会被截断。
  • item_id:必须是绑定店铺的自有商品 ID,跨店铺调用会返回权限错误。
  1. JSON 返回格式:接口返回的原始数据为标准 JSON,代码中通过response.json()直接解析,并提供了核心字段(评论内容、评分、时间)的提取示例。

四、关键合规与技术注意事项

  1. 权限限制
  • 仅企业商家可申请评论接口权限,个人开发者无权限。
  • 仅能获取自有店铺商品的评论,无法获取其他店铺商品评论。
  1. 调用频率
  • 基础权限默认 QPS=2,单日调用次数≤1000 次,超额会触发request-limited错误。
  • 如需提额,需向阿里开放平台提交业务场景说明和提额申请。
  1. 敏感信息保护
  • appkey/appsecret/sessionkey是核心凭证,禁止硬编码,建议通过环境变量读取(如os.getenv("TAOBAO_APP_KEY"))。
  • sessionkey有有效期(通常 30 天),需定期刷新。
  1. 数据合规
  • 获取的评论数据仅可用于自有店铺运营分析,禁止转售、公开或用于竞品分析。
  • 需遵守《淘宝开放平台服务协议》和《个人信息保护法》,对用户昵称、ID 等隐私数据进行脱敏处理。

五、非合规爬虫的风险提示(重要)

市面上的淘宝评论爬虫(基于网页 / APP 接口逆向)存在以下风险:

  1. 法律风险:违反《反不正当竞争法》和淘宝用户协议,可能面临账号封禁、法律追责。
  2. 技术风险:淘宝的反爬策略(滑块验证、设备指纹、IP 封禁)会导致爬虫频繁失效。
  3. 数据风险:逆向获取的数据可能包含脏数据,且无合规授权,商用会引发法律纠纷。

总结

  1. 该示例是基于阿里开放平台官方 API 的合规采集方案,核心是通过签名认证调用官方接口,而非违规爬虫。
  2. 代码实现了淘宝 / 天猫评论 API 的完整调用流程,可直接替换认证信息和商品 ID 使用。
  3. 必须严格遵守阿里开放平台的权限规则和数据使用规范,仅采集自有店铺商品评论,避免法律和技术风险。
相关文章
|
NoSQL 安全 Java
Spring Boot3整合Redis
Spring Boot3整合Redis
1262 1
|
4月前
|
JSON 监控 API
淘宝商品评论API接口概述,json数据返回
淘宝商品评论API(如taobao.item.reviews.get)是淘宝开放平台提供的核心数据服务,支持开发者通过HTTP请求获取指定商品的评论数据,覆盖文字、图片、视频等多媒体内容,并支持筛选、分页、统计等高级功能
|
前端开发 数据可视化 JavaScript
前端图形学实战: 从零开发一款轻量级滑动验证码组件(vue3 + vite版)
前端图形学实战: 从零开发一款轻量级滑动验证码组件(vue3 + vite版)
1452 0
|
3月前
|
JSON 算法 API
Python采集淘宝商品评论API接口及JSON数据返回全程指南
Python采集淘宝商品评论API接口及JSON数据返回全程指南
|
Java 开发工具 Android开发
【错误记录】Android Studio 编译报错 ( Invalid Gradle JDK configuration found )
【错误记录】Android Studio 编译报错 ( Invalid Gradle JDK configuration found )
1448 0
【错误记录】Android Studio 编译报错 ( Invalid Gradle JDK configuration found )
|
5月前
|
JSON 算法 安全
淘宝商品详情API接口系列,json数据返回
淘宝开放平台提供了多种API接口用于获取商品详情信息,主要通过 淘宝开放平台(Taobao Open Platform, TOP) 的 taobao.tbk.item.info.get(淘宝客商品详情)或 taobao.item.get(标准商品API)等接口实现。以下是关键信息及JSON返回示例:
|
3月前
|
存储 数据采集 监控
基于淘宝商品详情 API 的数据分析应用:如何构建商品价格波动与库存监控系统?
构建基于淘宝商品详情API的商品价格波动与库存监控系统,需围绕数据采集、存储、分析、告警、可视化五大核心模块展开。以下是分步骤的详细方案,结合技术实现与业务逻辑,确保系统高效、稳定、可扩展。
|
2月前
|
JSON 供应链 API
1688商品详情 API 接口系列(JSON 数据返回参考)
提供的核心 B2B 电商数据接口集合,聚焦 1688 平台商品全维度信息的标准化获取,支持 JSON 格式统一返回
|
8月前
|
JSON API 数据格式
手把手教你抓取京东商品评论:API 接口解析与 Python 实战
京东商品评论蕴含用户对产品质量、体验和服务的真实反馈,分析这些数据有助于企业优化产品和满足用户需求。由于京东未提供官方API,需通过逆向工程获取评论数据。其主要接口为“商品评论列表接口”,支持按商品ID、评分、排序方式等参数获取评论,返回JSON格式数据,包含评论列表、摘要(如好评率)及热门标签等信息。
|
5月前
|
API Python
Python采集淘宝店铺所有商品API接口指南
淘宝没有公开的官方API供采集店铺商品数据,但可以通过以下几种方法获取商品信息。需要注意的是,淘宝有严格的反爬机制,直接采集可能违反其服务条款。

热门文章

最新文章