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. 采集数据需遵守合规要求,免费版接口有诸多限制,商业场景需对接淘宝官方开放平台。
相关推荐
uoKent2 小时前
MySQL 游标(Cursor)详解:与存储过程的结合使用
数据库·mysql
小猪咪piggy2 小时前
【Python】(2) 执行顺序控制语句
开发语言·python
Web极客码2 小时前
宝塔面板后台突然显示“IO延迟非常高”
linux·服务器·数据库
IDC02_FEIYA2 小时前
Windows资源管理器未响应怎么处理?
运维·服务器·windows
Σdoughty2 小时前
python第三次作业
开发语言·前端·python
zhihuaba2 小时前
构建一个基于命令行的待办事项应用
jvm·数据库·python
MediaTea2 小时前
Python:内置类型也是类对象
开发语言·python
Faker66363aaa2 小时前
云和云阴影检测与识别_YOLO11-seg-DySample改进实现
python
BullSmall2 小时前
ACID 中的一致性
数据库·oracle