在电商数据分析、竞品调研、产品优化、用户舆情挖掘场景中,淘宝商品评论数据是最具价值的真实用户数据源。相比于商品销量、价格、详情页参数,用户真实评价、评分、购买规格、追评、晒单内容,能够直观反映产品优缺点、用户痛点、品控问题以及竞品差异化优势。
淘宝评论数据采用AJAX异步动态加载,无法直接通过静态网页源码获取,且平台具备严格的反爬机制,常规爬虫极易出现请求失败、数据为空、IP封禁、验证码拦截等问题。
本文基于 Python 实现一套稳定、可落地、带反爬策略、可批量分页采集的淘宝评论爬虫方案,涵盖接口抓包分析、请求伪造、批量分页爬取、数据清洗、本地存储全流程,代码简洁可直接运行,适配个人调研、小规模数据分析场景。如需合规高效批量采集,可使用标准化数据接口.
一、前置准备:环境与工具选型
- 开发环境
Python 3.8+ 版本,搭配 VS Code / PyCharm 均可,适配主流运行环境。 - 核心依赖库
- requests:发送 HTTP 请求,实现接口数据拉取
- fake-useragent:随机生成浏览器UA,规避基础反爬检测
- pandas:数据结构化清洗、去重、导出 Excel 报表
- time/random:实现随机休眠,模拟真人浏览节奏
一键安装所有依赖:
pip install requests fake-useragent pandas二、淘宝评论接口核心原理分析
- 接口加载逻辑
淘宝商品页面静态源码仅展示基础商品信息,评论数据全部通过异步AJAX接口动态请求渲染,页面滚动加载评论本质是分页调用后端评论接口。我们只需抓包拿到真实接口地址与请求参数,即可直接批量请求获取结构化评论数据。 - 关键抓包步骤(必看)
- 打开淘宝商品详情页,按下 F12 进入开发者工具,切换至「网络(Network)」面板,清空所有请求记录;
- 下滑页面加载评论区,筛选 XHR/ Fetch 类型请求,找到评论数据接口;
- 提取接口核心参数:商品ID、分页页码、每页条数、加密请求参数;
- 复制完整请求 Headers,重点保留 Cookie、Referer、User-Agent,这是请求成功的核心。
- 核心采集字段(业务常用)
本次实战精准抓取电商分析核心字段,无冗余数据:
- 用户昵称、用户头像
- 评论星级、评分等级
- 评论正文、晒图链接
- 购买商品规格(颜色/尺寸/版本)
- 评论时间、追评内容
三、核心实战代码:稳定分页爬取淘宝评论
以下代码经过实测优化,内置随机UA、请求间隔、异常捕获、分页遍历、数据去重,有效规避基础反爬,新手可直接替换参数运行。
importrequestsimporttimeimportrandomimportpandasaspdfromfake_useragentimportUserAgent# 初始化随机UAua=UserAgent()classTaobaoCommentSpider:def__init__(self):# 自定义请求头,需替换为自己抓包的Cookie,否则大概率无数据self.headers={"User-Agent":ua.random,"Referer":"https://detail.taobao.com/","Cookie":"此处替换为自己抓包获取的淘宝Cookie"}self.comment_list=[]defget_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}¤tPage={page}&pageSize=20"try:res=requests.get(url,headers=self.headers,timeout=15)res.encoding="utf-8"returnres.json()exceptExceptionase:print(f"第{page}页请求失败:{str(e)}")returnNonedefparse_data(self,json_data):"""解析接口返回数据,清洗结构化字段"""ifnotjson_dataor"rateList"notinjson_data:returnFalserate_list=json_data.get("rateList",[])foriteminrate_list:comment_info={"用户昵称":item.get("nick",""),"评论星级":item.get("star",""),"评论内容":item.get("rateContent",""),"购买规格":item.get("skuPropertiesName",""),"评论时间":item.get("rateDate",""),"是否晒图":1ifitem.get("pics",[])else0,"追评内容":item.get("appendComment",""),"追评时间":item.get("appendTime","")}self.comment_list.append(comment_info)returnTruedefbatch_crawl(self,item_id,max_page=10):"""批量分页爬取评论"""forpageinrange(1,max_page+1):print(f"正在采集第{page}页评论...")json_data=self.get_comments(item_id,page)status=self.parse_data(json_data)# 无更多评论则终止采集ifnotstatus:print("已无更多评论,采集结束")break# 随机休眠2-5秒,模拟真人操作,防封禁time.sleep(random.uniform(2,5))print(f"采集完成,共获取{len(self.comment_list)}条评论数据")defsave_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__":# 替换为目标淘宝商品IDTARGET_ITEM_ID="123456789012"spider=TaobaoCommentSpider()# 采集前10页评论,可自定义页数spider.batch_crawl(TARGET_ITEM_ID,max_page=10)spider.save_to_excel()四、关键参数替换与运行说明
- 商品ID获取方式
打开淘宝商品详情页,从URL中提取 item_id:
示例链接:https://item.taobao.com/item.htm?id=123456789012
加粗部分即为目标商品ID,替换代码中 TARGET_ITEM_ID 即可。 - Cookie 替换核心要点
淘宝评论接口必须携带有效登录Cookie,匿名请求会返回空数据或报错: - 浏览器登录淘宝账号,进入商品评论抓包接口;
- 复制请求Headers中的完整Cookie;
- 替换代码中 Cookie 字段,Cookie 过期需重新抓取更新。
五、反爬优化与避坑实战技巧 - 基础反爬规避策略
- 随机请求间隔:摒弃固定休眠时间,采用2-5秒随机延时,模拟真人浏览节奏;
- 动态UA轮换:每次请求随机生成浏览器UA,避免单一设备标识被风控;
- 请求头完整伪造:保留Referer、Cookie核心字段,伪装正常页面访问请求。
- 高频问题解决方案
- 请求成功但无数据:90%为Cookie过期或无效,重新抓取登录态Cookie即可解决;
- 频繁请求被拦截:减少单批次采集页数,延长休眠时间,禁止高频批量遍历;
- 数据重复冗余:开启pandas去重逻辑,根据昵称+评论内容双重去重,保证数据纯净;
- 接口报错超时:增加超时捕获与异常重试,规避网络波动导致的采集中断。
- 重要合规提醒
本代码仅适用于个人学习、小规模数据分析、竞品调研场景。大规模、商业化批量爬取极易触发平台风控,存在IP封禁、账号限流、合规风险。
商业化稳定方案:优先使用合规第三方标准化接口,无需抓包、无需维护Cookie、自带反爬调度,稳定批量获取淘宝、京东、1688全量商品与评论数据。
六、数据落地应用场景
采集清洗后的结构化评论数据,可直接用于各类电商分析场景: - 竞品调研:批量分析竞品差评痛点、用户核心诉求,优化自有产品;
- 舆情分析:通过评论文本、晒单数据,挖掘产品品控、售后、发货问题;
- 选品优化:统计高好评规格、高频用户需求,指导货源选品与SKU布局;
- 运营复盘:结合评论时间、追评数据,分析产品长期使用反馈与复购潜力。
七、总结
淘宝评论爬取的核心难点不在于代码实现,而在于动态接口定位、反爬规避、数据结构化清洗。本文提供的Python实战方案,无需复杂框架,轻量化易落地,兼顾稳定性与实用性,能够满足绝大多数个人调研、小规模数据分析需求。
对于长期、批量、商业化的数据采集需求,手动爬虫维护成本高、风控风险大,采用合规标准化数据接口是最优解,可实现7×24小时稳定采集,无需频繁更新Cookie、适配接口迭代。