前言
淘宝作为国内最大的电商平台,其商品评论数据对于选品分析、竞品研究、舆情监控等场景至关重要。然而,淘宝的反爬机制非常复杂,评论数据通过 JSONP 格式返回,且涉及签名验证、Cookie 管理等多重防护。
本文基于真实的淘宝商品评论爬虫项目源码,从三个维度展开讲解:纯 requests 请求 + JSONP 正则解析、CSV 数据结构化存储、以及使用 DrissionPage 监听浏览器 API 请求的自动化方案。三种方案各有优劣,适合不同的场景。
技术背景
淘宝评论接口分析
淘宝商品评论通过以下 API 获取:
1 | GET https://h5api.m.taobao.com/h5/mtop.taobao.rate.detaillist.get/6.0/ |
该接口返回 JSONP 格式的数据,即用回调函数包裹的 JSON:
1 | mtopjsonp14({"api":"mtop.taobao.rate.detaillist.get","data":{"rateList":[...]}}) |
需要用正则表达式将 JSON 部分提取出来才能解析。
JSONP 格式说明
JSONP(JSON with Padding)是一种跨域数据传输方式。服务器返回的不是纯 JSON,而是将 JSON 数据作为参数传递给一个回调函数。淘宝使用 mtopjsonp14 作为回调函数名,我们需要匹配 mtopjsonp14(...) 中的内容。
涉及的库
| 库 | 用途 |
|---|---|
requests |
发送 HTTP 请求 |
re |
正则表达式提取 JSONP 中的 JSON |
json |
解析 JSON 数据 |
csv |
数据结构化存储 |
datetime |
生成带时间戳的文件名 |
DrissionPage |
浏览器自动化与 API 监听 |
实现思路
项目包含三套代码,逐步递进:
- 基础版(
淘宝商品评论爬虫重建.py):requests 请求 + 正则解析 JSONP,提取评论文本 - 分析版(
淘宝商品评论 获取并分析.py):在基础版上增加 CSV 结构化存储,提取18个字段 - DrissionPage 版(
淘宝商品评论爬虫(只做思路参考代码本身无法运行).py):浏览器自动化监听 API 请求
1 | 方案一:requests → JSONP响应 → 正则提取JSON → 遍历rateList → 输出评论 |
核心代码解析
1. 基础版:JSONP 正则解析
首先构造请求 URL 和头部:
1 | import requests |
URL 中的关键参数:
auctionNumId:商品ID(979802405623)pageNo:评论页码pageSize:每页评论数(20条)sign:请求签名,MD5 算法生成
核心的正则提取逻辑:
1 | # 模拟的JSONP响应数据 |
正则说明:
re.S标志使.匹配包括换行符在内的所有字符,因为 JSONP 响应可能跨多行。\d+匹配回调函数名中的数字部分(如mtopjsonp14中的14)。
2. 分析版:CSV 结构化存储
分析版在基础版上做了大幅升级,将评论数据结构化存储为 CSV 文件,提取18个字段:
1 | import csv |
关键设计点:
encoding='utf-8-sig':使用 BOM 编码,确保 Excel 打开 CSV 时中文不乱码rate.get('id', ''):使用.get()方法避免字段缺失时抛出异常sku_map提取:评论数据中的skuMap字段包含商品规格信息(颜色、容量等)
3. 单条评论数据结构
通过分析手动创建的 JSON 文件,可以了解单条评论的完整数据结构:
1 | { |
4. DrissionPage 版:API 监听方案
当纯 requests 方案因反爬失效时,可以使用 DrissionPage 监听浏览器请求:
1 | from DrissionPage import ChromiumPage |
这个方案的思路是:让真实浏览器去访问页面,DrissionPage 在后台监听网络请求,当捕获到评论 API 的响应时直接提取数据。由于是真实浏览器行为,完全绕过了签名和反爬问题。
使用前需要先配置浏览器路径:
1 | from DrissionPage import ChromiumOptions |
运行效果
运行分析版爬虫后,控制台输出:
1 | 数据已成功保存到 taobao_reviews_20250930_104357.csv 文件中 |
生成的 CSV 文件包含18列结构化数据,可直接用 Excel 或 pandas 打开分析。
总结与优化方向
本文基于淘宝商品评论爬虫的三套真实源码,完整讲解了 JSONP 解析、CSV 结构化存储、DrissionPage API 监听三种技术方案。
三种方案对比:
| 维度 | requests 基础版 | requests 分析版 | DrissionPage 版 |
|---|---|---|---|
| 实现难度 | 低 | 中 | 中 |
| 反爬风险 | 高(签名易过期) | 高 | 低(真实浏览器) |
| 数据完整度 | 仅评论文本 | 18字段结构化 | 原始JSON |
| 运行速度 | 快 | 快 | 慢(需启动浏览器) |
| 可扩展性 | 差 | 好 | 好 |
优化方向:
- 自动翻页:当前仅采集第一页,可根据
hasNext字段循环翻页 - 签名自动生成:逆向
sign参数的 MD5 算法,实现签名自动化 - 评论图片下载:
feedPicList中的图片URL可批量下载到本地 - 情感分析:对
feedback字段进行 NLP 情感分析,统计好评/差评比例 - 定时监控:配合定时任务,监控指定商品评论变化,及时发现差评
淘宝评论爬虫的核心挑战在于 sign 签名的获取和 JSONP 格式的解析。掌握了正则提取和 DrissionPage 监听两种方案,就能灵活应对各种 JSONP 接口的数据采集需求。