在电商数据分析、竞品调研、产品优化、用户舆情挖掘场景中,淘宝商品评论数据是最具价值的真实用户数据源。相比于商品销量、价格、详情页参数,用户真实评价、评分、购买规格、追评、晒单内容,能够直观反映产品优缺点、用户痛点、品控问题以及竞品差异化优势。
淘宝评论数据采用AJAX异步动态加载,无法直接通过静态网页源码获取,且平台具备严格的反爬机制,常规爬虫极易出现请求失败、数据为空、IP封禁、验证码拦截等问题。
本文基于 Python 实现一套稳定、可落地、带反爬策略、可批量分页采集的淘宝评论爬虫方案,涵盖接口抓包分析、请求伪造、批量分页爬取、数据清洗、本地存储全流程,代码简洁可直接运行,适配个人调研、小规模数据分析场景。如需合规高效批量采集,可使用标准化数据接口.
一、前置准备:环境与工具选型

  1. 开发环境
    Python 3.8+ 版本,搭配 VS Code / PyCharm 均可,适配主流运行环境。
  2. 核心依赖库
  • requests:发送 HTTP 请求,实现接口数据拉取
  • fake-useragent:随机生成浏览器UA,规避基础反爬检测
  • pandas:数据结构化清洗、去重、导出 Excel 报表
  • time/random:实现随机休眠,模拟真人浏览节奏
    一键安装所有依赖:
pip install requests fake-useragent pandas

二、淘宝评论接口核心原理分析

  1. 接口加载逻辑
    淘宝商品页面静态源码仅展示基础商品信息,评论数据全部通过异步AJAX接口动态请求渲染,页面滚动加载评论本质是分页调用后端评论接口。我们只需抓包拿到真实接口地址与请求参数,即可直接批量请求获取结构化评论数据。
  2. 关键抓包步骤(必看)
  3. 打开淘宝商品详情页,按下 F12 进入开发者工具,切换至「网络(Network)」面板,清空所有请求记录;
  4. 下滑页面加载评论区,筛选 XHR/ Fetch 类型请求,找到评论数据接口;
  5. 提取接口核心参数:商品ID、分页页码、每页条数、加密请求参数;
  6. 复制完整请求 Headers,重点保留 Cookie、Referer、User-Agent,这是请求成功的核心。
  7. 核心采集字段(业务常用)
    本次实战精准抓取电商分析核心字段,无冗余数据:
  • 用户昵称、用户头像
  • 评论星级、评分等级
  • 评论正文、晒图链接
  • 购买商品规格(颜色/尺寸/版本)
  • 评论时间、追评内容
    三、核心实战代码:稳定分页爬取淘宝评论
    以下代码经过实测优化,内置随机UA、请求间隔、异常捕获、分页遍历、数据去重,有效规避基础反爬,新手可直接替换参数运行。
import requests
import time
import random
import pandas as pd
from fake_useragent import UserAgent

# 初始化随机UA
ua = UserAgent()

class TaobaoCommentSpider:
    def __init__(self):
        # 自定义请求头,需替换为自己抓包的Cookie,否则大概率无数据
        self.headers = {
            "User-Agent": ua.random,
            "Referer": "https://detail.taobao.com/",
            "Cookie": "此处替换为自己抓包获取的淘宝Cookie"
        }
        self.comment_list = []

    def get_comments(self, item_id, page=1):
        """
        单页采集淘宝商品评论
        :param item_id: 淘宝商品ID
        :param page: 分页页码
        :return: 单页评论数据
        """
        # 淘宝评论动态接口(通用适配)
        url = f"https://rate.tmall.com/list_detail_rate.htm?itemId={item_id}&currentPage={page}&pageSize=20"
        try:
            res = requests.get(url, headers=self.headers, timeout=15)
            res.encoding = "utf-8"
            return res.json()
        except Exception as e:
            print(f"第{page}页请求失败:{str(e)}")
            return None

    def parse_data(self, json_data):
        """解析接口返回数据,清洗结构化字段"""
        if not json_data or "rateList" not in json_data:
            return False
        rate_list = json_data.get("rateList", [])
        for item in rate_list:
            comment_info = {
                "用户昵称": item.get("nick", ""),
                "评论星级": item.get("star", ""),
                "评论内容": item.get("rateContent", ""),
                "购买规格": item.get("skuPropertiesName", ""),
                "评论时间": item.get("rateDate", ""),
                "是否晒图": 1 if item.get("pics", []) else 0,
                "追评内容": item.get("appendComment", ""),
                "追评时间": item.get("appendTime", "")
            }
            self.comment_list.append(comment_info)
        return True

    def batch_crawl(self, item_id, max_page=10):
        """批量分页爬取评论"""
        for page in range(1, max_page + 1):
            print(f"正在采集第{page}页评论...")
            json_data = self.get_comments(item_id, page)
            status = self.parse_data(json_data)
            # 无更多评论则终止采集
            if not status:
                print("已无更多评论,采集结束")
                break
            # 随机休眠2-5秒,模拟真人操作,防封禁
            time.sleep(random.uniform(2, 5))
        print(f"采集完成,共获取{len(self.comment_list)}条评论数据")

    def save_to_excel(self, save_name="淘宝商品评论数据.xlsx"):
        """数据去重并导出Excel"""
        df = pd.DataFrame(self.comment_list)
        # 根据评论内容+昵称去重,过滤重复数据
        df = df.drop_duplicates(subset=["用户昵称", "评论内容"])
        df.to_excel(save_name, index=False)
        print(f"数据已清洗导出至:{save_name}")

if __name__ == "__main__":
    # 替换为目标淘宝商品ID
    TARGET_ITEM_ID = "123456789012"
    spider = TaobaoCommentSpider()
    # 采集前10页评论,可自定义页数
    spider.batch_crawl(TARGET_ITEM_ID, max_page=10)
    spider.save_to_excel()

四、关键参数替换与运行说明

  1. 商品ID获取方式
    打开淘宝商品详情页,从URL中提取 item_id:
    示例链接:https://item.taobao.com/item.htm?id=123456789012
    加粗部分即为目标商品ID,替换代码中 TARGET_ITEM_ID 即可。
  2. Cookie 替换核心要点
    淘宝评论接口必须携带有效登录Cookie,匿名请求会返回空数据或报错:
  3. 浏览器登录淘宝账号,进入商品评论抓包接口;
  4. 复制请求Headers中的完整Cookie;
  5. 替换代码中 Cookie 字段,Cookie 过期需重新抓取更新。
    五、反爬优化与避坑实战技巧
  6. 基础反爬规避策略
  • 随机请求间隔:摒弃固定休眠时间,采用2-5秒随机延时,模拟真人浏览节奏;
  • 动态UA轮换:每次请求随机生成浏览器UA,避免单一设备标识被风控;
  • 请求头完整伪造:保留Referer、Cookie核心字段,伪装正常页面访问请求。
  1. 高频问题解决方案
  • 请求成功但无数据:90%为Cookie过期或无效,重新抓取登录态Cookie即可解决;
  • 频繁请求被拦截:减少单批次采集页数,延长休眠时间,禁止高频批量遍历;
  • 数据重复冗余:开启pandas去重逻辑,根据昵称+评论内容双重去重,保证数据纯净;
  • 接口报错超时:增加超时捕获与异常重试,规避网络波动导致的采集中断。
  1. 重要合规提醒
    本代码仅适用于个人学习、小规模数据分析、竞品调研场景。大规模、商业化批量爬取极易触发平台风控,存在IP封禁、账号限流、合规风险。
    商业化稳定方案:优先使用合规第三方标准化接口,无需抓包、无需维护Cookie、自带反爬调度,稳定批量获取淘宝、京东、1688全量商品与评论数据。
    六、数据落地应用场景
    采集清洗后的结构化评论数据,可直接用于各类电商分析场景:
  2. 竞品调研:批量分析竞品差评痛点、用户核心诉求,优化自有产品;
  3. 舆情分析:通过评论文本、晒单数据,挖掘产品品控、售后、发货问题;
  4. 选品优化:统计高好评规格、高频用户需求,指导货源选品与SKU布局;
  5. 运营复盘:结合评论时间、追评数据,分析产品长期使用反馈与复购潜力。
    七、总结
    淘宝评论爬取的核心难点不在于代码实现,而在于动态接口定位、反爬规避、数据结构化清洗。本文提供的Python实战方案,无需复杂框架,轻量化易落地,兼顾稳定性与实用性,能够满足绝大多数个人调研、小规模数据分析需求。
    对于长期、批量、商业化的数据采集需求,手动爬虫维护成本高、风控风险大,采用合规标准化数据接口是最优解,可实现7×24小时稳定采集,无需频繁更新Cookie、适配接口迭代。
Logo

电商企业物流数字化转型必备!快递鸟 API 接口,72 小时快速完成物流系统集成。全流程实战1V1指导,营造开放的API技术生态圈。

更多推荐