淘宝商品评论数据爬取:Python实战指南
·
在电商数据分析、竞品调研、产品优化、用户舆情挖掘场景中,淘宝商品评论数据是最具价值的真实用户数据源。相比于商品销量、价格、详情页参数,用户真实评价、评分、购买规格、追评、晒单内容,能够直观反映产品优缺点、用户痛点、品控问题以及竞品差异化优势。
淘宝评论数据采用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、请求间隔、异常捕获、分页遍历、数据去重,有效规避基础反爬,新手可直接替换参数运行。
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}¤tPage={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()
四、关键参数替换与运行说明
- 商品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、适配接口迭代。
更多推荐




所有评论(0)