竞品分析 + 用户洞察自动化|基于 item_review 评论接口 + 多 AI Agent 实现淘宝评论全量采集与智能分析(附python源码)

做电商运营、竞品调研、产品优化、选品复盘,商品用户评论是最核心的一手数据。传统方式需要手动翻页复制评论、整理图文评价、人工提炼用户痛点、好评卖点,一款热门商品动辄上万条评论,人工处理效率极低,还容易遗漏关键信息。

搭配分层 AI Agent 架构,实现全页评论自动抓取、图文数据解析、异常自动重试、评论内容智能分类、用户痛点提炼全流程自动化。整套方案无需复杂爬虫,接口稳定防封禁,部署后即可实现无人值守批量爬取 + 分析评论,适配竞品监控、产品优化、文案提炼、舆情分析等场景,个人开发者与企业 ERP 系统均可快速对接。

一、item_review 接口完整说明

接口名称:taobao.item_review(淘宝 / 天猫商品评论获取)请求地址:https://api-gw.onebound.cn/taobao/item_review

1. 公共请求参数(全局通用)

表格

参数名 类型 是否必填 说明
key String 接口调用凭证,URL 拼接传参
secret String 调用密钥
api_name String 固定填写 item_review
cache String yes/no,默认开启缓存,加速请求
result_type String 默认 json,jsonu 可直接正常展示中文
lang String 语言版本,默认 cn 简体中文

2. 核心业务请求参数

表格

参数名 说明 取值规则
num_iid 商品 ID 必填,淘宝商品唯一编号
page 页码 支持 1~100 页,单商品最多抓取 100 页评论
sort 评论排序 0 = 默认排序,1 = 最新评论排序
version 日期格式版本 不传:2025-01-12 11:16:35;传version=12025年1月12日

3. 响应核心字段解析

接口返回标准化 JSON 结构,重点业务字段如下:

  • total_results:评论总条数

  • totalpage:评论总页数

  • page_size:单页返回评论数量(固定 10 条 / 页)

  • page:当前请求页码

  • item[]:评论列表数组,单条评论核心字段:

    • rate_content:用户主评论内容
    • rate_date:评论时间
    • pics:评论晒图地址数组
    • display_user_nick:匿名用户昵称
    • auction_sku:对应购买商品规格
    • add_feedback:追评内容
    • add_feedback_images:追评图片地址
    • rate_id:评论唯一 ID

4. 错误码与异常处理(Agent 内置容错逻辑)

表格

错误码 含义 自动化处理方案
0000 调用成功 正常解析、存储评论数据
2000 无数据 / 商品不存在 终止当前任务,日志提示商品失效
4003 参数错误 自动校验参数,重新发起请求
4008 调用并发超限 休眠延时,分批重试
4013 调用次数超限 暂停任务,记录断点,延后继续采集
4016 账户余额不足 终止任务,弹窗 / 日志告警
4017 请求超时 重试 2 次,仍失败则跳过当前页码

二、多 AI Agent 整体分工逻辑

延续轻量化多智能体架构,各司其职、流水线执行,无需复杂部署,5 个 Agent 串联完成参数组装→分页采集→数据清洗→内容分析→报表导出全流程:

  1. 任务配置 Agent:接收商品 ID、采集页数、排序规则,自动拼接接口请求参数,生成分页任务队列
  2. 评论采集 Agent:循环遍历分页队列,调用评论接口,捕获各类异常并自动重试,批量拉取全量评论
  3. 数据清洗 Agent:过滤空评论、脱敏冗余内容,统一图文地址格式,规整 SKU、时间字段
  4. 评论分析 Agent:提炼好评卖点、负面痛点、高频关键词,区分主评 / 追评,做简易舆情分类
  5. 报表导出 Agent:汇总所有数据,自动生成 Excel 表格,包含评论内容、晒图链接、用户规格、分析标签

整体链路:输入商品 ID → 生成分页任务 → 全页自动采集 → 数据清洗规整 → AI 智能分析 → 导出成品报表

三、完整可运行 Python 代码

python

运行

复制代码
# -*- coding: utf-8 -*-
"""
淘宝商品评论自动化采集+AI分析工具
基于 taobao.item_review 接口 + 多Agent架构
功能:分页采集、异常重试、数据清洗、评论分析、自动导出Excel
"""
import requests
import time
import pandas as pd

# ==================== 配置区域 请自行修改 ====================
API_KEY = "你的key"
API_SECRET = "你的secret"
# 目标商品ID
GOODS_ID = "600530677643"
# 采集页码范围 1 - 100
START_PAGE = 1
END_PAGE = 20
# 排序:0默认 1最新
SORT_TYPE = 0
# 日期版本 0/1
DATE_VERSION = 1
# ===========================================================

BASE_URL = "https://api-gw.onebound.cn/taobao/item_review"

# Agent1:任务配置 & 参数生成
class TaskAgent:
    def create_task_list(self):
        task_list = []
        for page in range(START_PAGE, END_PAGE + 1):
            params = {
                "key": API_KEY,
                "secret": API_SECRET,
                "api_name": "item_review",
                "num_iid": GOODS_ID,
                "page": page,
                "sort": SORT_TYPE,
                "version": DATE_VERSION,
                "result_type": "jsonu",
                "cache": "yes"
            }
            task_list.append(params)
        print(f"已生成 {len(task_list)} 个分页采集任务")
        return task_list

# Agent2:评论采集 & 异常重试
class ReviewFetchAgent:
    def __init__(self):
        self.review_data = []

    def fetch_one_page(self, params, retry=2):
        try:
            resp = requests.get(BASE_URL, params=params, timeout=20)
            res = resp.json()
            code = res.get("error_code")

            if code == "0000":
                items_data = res.get("items", {})
                page_items = items_data.get("item", [])
                self.review_data.extend(page_items)
                print(f"✅ 第{params['page']}页采集完成,本页{len(page_items)}条评论")
                return True
            elif code == "2000":
                print(f"❌ 第{params['page']}页:商品不存在或无评论")
                return False
            elif code == "4008":
                print(f"⚠️ 第{params['page']}页:访问超限,等待5秒重试")
                time.sleep(5)
                if retry > 0:
                    self.fetch_one_page(params, retry - 1)
                return False
            elif code == "4017":
                print(f"⚠️ 第{params['page']}页:请求超时,重试中")
                time.sleep(3)
                if retry > 0:
                    self.fetch_one_page(params, retry - 1)
                return False
            else:
                print(f"❌ 第{params['page']}页 异常:{res.get('reason')}")
                return False
        except Exception as e:
            print(f"❌ 网络异常:{str(e)}")
            return False

    def run_all_task(self, task_list):
        for task in task_list:
            self.fetch_one_page(task)
            time.sleep(0.8)
        return self.review_data

# Agent3:数据清洗 & 格式规整
class CleanAgent:
    def clean_data(self, raw_list):
        clean_result = []
        for item in raw_list:
            new_item = {}
            # 基础评论信息
            new_item["评论内容"] = item.get("rate_content", "")
            new_item["评论时间"] = item.get("rate_date", "")
            new_item["用户昵称"] = item.get("display_user_nick", "")
            new_item["购买规格"] = item.get("auction_sku", "")
            new_item["追评内容"] = item.get("add_feedback", "")

            # 图片链接拼接
            pic_list = item.get("pics", [])
            new_item["晒图链接"] = ",".join(pic_list) if pic_list else ""
            add_pic = item.get("add_feedback_images", [])
            new_item["追评图片"] = ",".join(add_pic) if add_pic else ""

            clean_result.append(new_item)
        print(f"\n数据清洗完成,有效评论共:{len(clean_result)} 条")
        return clean_result

# Agent4:评论智能分析(简易语义标签)
class AnalyzeAgent:
    def analysis_text(self, data_list):
        positive_words = ["好用", "不错", "推荐", "性价比", "质量好", "满意", "回购"]
        negative_words = ["不好", "差劲", "漏水", "过敏", "不值", "失望"]

        for row in data_list:
            content = row["评论内容"] + row["追评内容"]
            label = "中性评价"
            # 简单正负向判断
            if any(w in content for w in positive_words):
                label = "好评"
            if any(w in content for w in negative_words):
                label = "差评/吐槽"
            row["评价标签"] = label
        return data_list

# Agent5:报表导出Agent
class ExportAgent:
    def save_to_excel(self, data):
        df = pd.DataFrame(data)
        file_name = f"商品评论数据_{GOODS_ID}.xlsx"
        df.to_excel(file_name, index=False)
        print(f"\n📁 报表导出成功!文件:{file_name}")
        print(f"📊 总计采集并分析评论:{len(data)} 条")

# 程序入口
if __name__ == "__main__":
    # 1. 生成任务队列
    task_agent = TaskAgent()
    tasks = task_agent.create_task_list()

    # 2. 批量采集评论
    fetch_agent = ReviewFetchAgent()
    raw_data = fetch_agent.run_all_task(tasks)

    if not raw_data:
        print("未采集到任何评论数据,程序退出")
    else:
        # 3. 数据清洗
        clean_agent = CleanAgent()
        clean_data = clean_agent.clean_data(raw_data)

        # 4. 智能评价分析
        analyze_agent = AnalyzeAgent()
        final_data = analyze_agent.analysis_text(clean_data)

        # 5. 导出Excel报表
        export_agent = ExportAgent()
        export_agent.save_to_excel(final_data)

运行前置准备

  1. 安装依赖库:

bash

运行

复制代码
pip install requests pandas openpyxl
  1. 修改代码内 API_KEYAPI_SECRETGOODS_ID 为自己的凭证与目标商品 ID
  2. 按需调整采集页码、排序规则,直接运行即可

四、落地实战场景

场景 1:竞品深度调研

抓取同行爆款商品全量评论,通过分析标签区分好评、差评,快速总结竞品核心卖点、用户吐槽点,用来优化自身产品、调整定价与宣传话术。

场景 2:店铺产品复盘

定期采集自家商品评论,批量查看追评、晒图反馈,及时发现质量问题、售后隐患,快速调整供应链与客服方案。

场景 3:电商文案 / 标题优化

从高赞评论里提取用户高频用词、种草话术,直接复用至商品标题、详情页、短视频文案,更贴合用户口语习惯,提升转化。

场景 4:舆情监控

设置定时任务,每日自动抓取最新评论,第一时间发现负面评价,做到及时介入处理,维护店铺口碑。

五、常见问题 FAQ

Q1:为什么最多只能采集 100 页评论?

A:接口单商品页码上限为 100 页,每页固定 10 条数据,总计最多 10000 条评论,主流商品该数量可覆盖绝大部分有效评价。如需更多样本,可多时段分批次采集。

Q2:频繁报 4008 并发超限如何优化?

A:一是加大代码中 time.sleep 休眠间隔;二是拆分页码,分多批次、分时段执行采集任务,避开请求高峰。

Q3:图片链接无法直接打开?

A:返回的图片为相对地址,拼接 https: 前缀即可正常访问,代码中可自行增加地址补全逻辑。

Q4:如何对接大模型实现更精细的评论分析?

A:在 AnalyzeAgent 模块对接大模型接口,传入评论文本,实现情感打分、痛点分类、关键词提取、自动生成分析报告,进一步提升智能化程度。

Q5:商品 ID 正确但返回 2000 无数据?

A:商品已下架、违规封禁、隐藏评论都会出现该报错,核对商品状态,更换商品 ID 重试即可。

六、总结

借助 taobao.item_review 标准化评论接口 + 多 AI Agent 架构,彻底摆脱人工翻页、整理评论的重复工作。整套方案开发成本低、稳定性强,规避了传统爬虫 IP 封禁、解析失效等问题。

从基础的批量采集 ,到进阶的数据清洗、智能语义分析、报表自动导出,全流程无人值守,不管是个人做竞品分析、中小团队日常运营,还是对接企业自研 ERP、数据分析系统,都能快速落地。在此基础上,还可以拓展评论词云生成、负面评论预警、多商品批量遍历等功能,不断完善整套自动化体系。

相关推荐
信看1 小时前
Jetson Orin Quectel QMI 拨号上网
开发语言·python
凤凰院凶涛QAQ1 小时前
《Java版数据结构 & 集合类剖析》链表与LinkedList:节点手拉手,增删不用愁
java·数据结构·链表
骑士雄师1 小时前
课程导航LangGraph核心概念
python
SilentSamsara1 小时前
DuckDB + Python:嵌入式 OLAP 数据库的轻量分析实战
开发语言·数据库·python·微服务
唐青枫2 小时前
Java MyBatis 实战指南:XML 映射、动态 SQL 与数据访问层设计
java·mybatis
码语智行2 小时前
MQTT 配置、依赖与使用说明
java·物联网·mt
_日拱一卒2 小时前
LeetCode:39组合总和
java·算法·leetcode·职场和发展
爱上纯净的蓝天2 小时前
30 分钟上手 AtomCode:用它写一个 Python 批量整理文件/改名/生成报告小工具(新手教程)
python·开源·自动化脚本·atomcode·ai 编码助手
郝学胜-神的一滴2 小时前
力扣 662 :二叉树最大宽度
java·数据结构·c++·python·算法·leetcode·职场和发展