Python调用淘宝评论API:从入门到首次采集全流程

你想要通过 Python 完成淘宝评论 API 的调用和首次评论采集,我会从前置准备、环境搭建、接口认知、代码实现、结果解析这几个步骤,带你完成从入门到成功采集的全流程,全程兼顾新手可操作性,避开各类坑点。

一、重要前置说明(必看,避坑核心)

首先要明确:淘宝没有公开的「通用评论采集 API」(个人 / 普通开发者无法直接调用淘宝官方的商品评论接口),原因如下:

  1. 淘宝开放平台(TOP)的接口多面向企业 / 商家,且评论相关接口(如taobao.item.review.get)仅开放给天猫商城商家、淘宝官方合作服务商,个人开发者无法申请到权限;
  2. 淘宝对非官方接口调用有严格的反爬机制,直接爬取网页评论容易被封禁 IP、限制账号。

因此,我们采用「第三方开放接口(适合入门学习)」来完成首次采集(无需企业资质,快速上手),后续若有商业需求,需对接淘宝官方合规渠道。

本次教程核心:使用第三方封装的淘宝评论接口,完成 Python 环境搭建→接口调用→评论数据解析→本地保存的全流程。

二、前置准备工作

1. 环境要求
  • Python 3.7+(推荐 3.9/3.10,兼容性更好)
  • 必备 Python 库:requests(发送网络请求)、json(解析返回数据)、pandas(可选,格式化保存数据)
2. 获取第三方接口密钥(以「数据」为例,免费试用)

我们选择淘宝商品评论接口(免费试用,无需企业资质,适合入门),步骤如下:

  1. 关注博主,注册并完成实名认证(个人实名认证即可,免费);
  2. 搜索「淘宝商品评论查询」,进入接口详情页,点击「免费领取」,获取AppKey(接口调用密钥,后续代码需用到);
  3. 查看接口文档,确认核心信息:
    • 请求地址:xxx
    • 请求方式:GET
    • 必填参数:key(你的 AppKey)、num_iid(淘宝商品 ID)
3. 获取淘宝商品 ID(num_iid

淘宝商品详情页 URL 示例:https://item.taobao.com/item.htm?id=690123456789,其中690123456789就是num_iid(商品唯一标识)。

三、步骤 1:搭建 Python 环境,安装必备库

打开终端 / 命令提示符,执行以下安装命令:

bash

运行

复制代码
# 安装核心库requests(发送请求)
pip install requests

# 可选:安装pandas(将评论数据保存为Excel,方便查看)
pip install pandas

四、步骤 2:编写 Python 代码,完成首次评论采集

完整代码(可直接复制使用,只需修改 2 个参数)

python

运行

复制代码
import requests
import json
import pandas as pd
from datetime import datetime

def get_taobao_comments():
    """
    调用第三方接口,采集淘宝商品评论
    """
    # ---------------------- 需修改的参数(仅这2个) ----------------------
    APP_KEY = "你的聚合数据AppKey"  # 替换为你自己领取的AppKey
    NUM_IID = "690123456789"       # 替换为你要采集的淘宝商品ID
    # --------------------------------------------------------------------

    # 1. 接口配置信息
    url = "https://v.juhe.cn/taobao/unified/get_comments"
    params = {
        "key": APP_KEY,
        "num_iid": NUM_IID,
        "page": 1,          # 页码,默认第1页
        "page_size": 20,    # 每页评论数,最大20条(免费版限制)
        "format": "json"    # 返回格式,固定为json
    }

    try:
        # 2. 发送GET请求(添加超时设置,避免无限等待)
        response = requests.get(url, params=params, timeout=30)
        # 3. 检查请求是否成功(响应状态码200表示成功)
        response.raise_for_status()  # 若状态码不是200,抛出异常

        # 4. 解析返回的JSON数据
        result = response.json()
        print("接口返回原始数据:\n", json.dumps(result, ensure_ascii=False, indent=2))

        # 5. 判断接口调用是否成功(根据聚合数据返回码判断,200表示成功)
        if result.get("error_code") == 0:
            # 提取核心评论数据
            comment_data = result.get("result", {}).get("comments", [])
            if not comment_data:
                print("该商品暂无评论或未采集到评论数据")
                return

            # 6. 格式化评论数据(提取需要的字段,剔除冗余信息)
            formatted_comments = []
            for comment in comment_data:
                formatted_comment = {
                    "评论ID": comment.get("comment_id", ""),
                    "用户昵称": comment.get("nickname", ""),
                    "评论内容": comment.get("content", ""),
                    "评论时间": comment.get("create_time", ""),
                    "商品规格": comment.get("sku", ""),
                    "评分": comment.get("star", ""),
                    "是否有图片": "是" if comment.get("images") else "否"
                }
                formatted_comments.append(formatted_comment)

            # 7. 输出格式化后的评论数据
            print("\n格式化后的评论数据:")
            for idx, comm in enumerate(formatted_comments, 1):
                print(f"第{idx}条:", comm)

            # 8. 可选:将评论数据保存为Excel文件(方便后续查看和分析)
            save_path = f"淘宝商品{NUM_IID}_评论_{datetime.now().strftime('%Y%m%d%H%M%S')}.xlsx"
            pd.DataFrame(formatted_comments).to_excel(save_path, index=False, encoding="utf-8")
            print(f"\n评论数据已成功保存至:{save_path}")

        else:
            # 接口调用失败,打印错误信息
            print(f"接口调用失败:{result.get('reason', '未知错误')},错误码:{result.get('error_code')}")

    except requests.exceptions.Timeout:
        print("错误:请求超时,请检查网络连接或稍后重试")
    except requests.exceptions.RequestException as e:
        print(f"错误:请求失败,详情:{e}")
    except Exception as e:
        print(f"错误:数据解析或处理失败,详情:{e}")

if __name__ == "__main__":
    get_taobao_comments()
代码关键部分解释
  1. 参数配置 :仅需修改APP_KEYNUM_IID,其余参数保持默认即可(免费版限制每页最多 20 条评论);
  2. 请求发送 :使用requests.get()发送 GET 请求,添加timeout=30避免请求无限等待,提高程序健壮性;
  3. 状态码检查response.raise_for_status()会在响应状态码非 200 时抛出异常,快速捕获请求失败问题;
  4. 数据解析 :先判断聚合数据的error_code(200 为成功),再提取核心评论列表comments,避免因数据为空导致程序报错;
  5. 数据格式化:提取常用字段(评论 ID、用户昵称、评论内容等),剔除冗余信息,方便查看和保存;
  6. 本地保存 :使用pandas将格式化数据保存为 Excel 文件,文件名包含商品 ID 和当前时间,避免文件重名。

五、步骤 3:运行代码,查看采集结果

  1. 将代码中的APP_KEY替换为你在聚合数据领取的真实密钥,NUM_IID替换为目标淘宝商品 ID;
  2. 运行 Python 脚本(终端执行python 文件名.py,或直接在 PyCharm/VS Code 中点击运行);
  3. 查看运行结果:
    • 终端会输出接口原始数据和格式化后的评论数据;
    • 脚本所在目录会生成一个 Excel 文件,打开即可查看结构化的评论数据。

六、常见问题与解决方案

  1. 错误码 10001/10002(AppKey 错误 / 无效)

    • 原因:AppKey 填写错误、未领取接口、账号未实名认证;
    • 解决方案:核对 AppKey 是否正确,确认已领取「淘宝商品评论查询」接口,完成个人实名认证。
  2. 错误码 20001/20002(参数错误 / 商品 ID 无效)

    • 原因:num_iid填写错误、商品已下架 / 不存在;
    • 解决方案:核对商品 ID 是否正确,手动在淘宝官网打开商品详情页验证商品是否存在。
  3. 请求超时 / 连接失败

    • 原因:网络不稳定、防火墙拦截、接口服务器维护;
    • 解决方案:检查网络连接,关闭防火墙重试,或稍后再试。
  4. 采集到的评论数量过少

    • 原因:免费版接口限制每页 20 条、最多采集 10 页;
    • 解决方案:如需更多数据,可升级聚合数据付费版,或循环修改page参数实现多页采集(注意接口限流)。

七、注意事项(合规与风险)

  1. 仅用于学习研究:第三方接口采集的数据不可用于商业用途,否则可能违反淘宝用户协议和相关法律法规;
  2. 避免高频调用:即使是免费版接口,也有调用频率限制(一般每分钟 10 次以内),高频调用会被封禁接口权限;
  3. 官方合规渠道:若有商业需求,需入驻开发平台,申请企业资质和官方接口权限,这是唯一合规的方式。

总结

  1. 淘宝无公开通用评论 API,新手入门可采用第三方接口(如聚合数据)快速完成采集,核心步骤是「获取 AppKey→配置商品 ID→发送请求→解析保存数据」;
  2. 本次教程的 Python 代码可直接落地,仅需修改 2 个核心参数,即可完成评论采集并保存为 Excel 文件;
  3. 采集数据需遵守合规要求,免费版接口有诸多限制,商业场景需对接淘宝官方开放平台。
相关推荐
海阔天空任鸟飞~6 小时前
Linux 权限 777
linux·运维·服务器
流星白龙6 小时前
【Redis】2.Redis重大版本
数据库·redis·junit
流星白龙6 小时前
【Redis】7.Hash表
数据库·redis·哈希算法
love530love6 小时前
OpenClaw Windows Companion 桌面客户端 连接 LM Studio 完整配置指南
人工智能·windows·python·openclaw
流星白龙7 小时前
【Redis】4.基本全局命令
数据库·redis·缓存
王八八。8 小时前
Navicat 17破解版下载安装教程 附安装激活步骤(2026 最新版)
数据库·navicat
cui_ruicheng8 小时前
Python从入门到实战(十六):多进程编程
开发语言·python
Jelena157795857929 小时前
电商运营分析数据比价接口实战:多平台价格监控与智能决策系统
java·大数据·数据库
Kina_C9 小时前
Linux iptables 防火墙原理与实操——从四表五链到 NAT 配置
linux·运维·服务器·iptables
_Jimmy_10 小时前
FastAPI + SQLAlchemy全局事务管理
python·fastapi