一、环境准备与接口分析
1.核心工具配置
安装requests、fake_useragent库,模拟浏览器请求头规避基础反爬:
from fake_useragent import UserAgent ua = UserAgent() headers = {
"User-Agent": ua.random, "Referer": "https://detail.tmall.com/"}
使用Flask搭建本地API中转服务,降低直接调用淘宝接口的封禁风险。
评论接口定位
通过浏览器开发者工具抓取真实接口,解析关键参数:
itemId:商品ID(从商品页URL提取)
currentPage:分页页码(需循环至尾页)
Cookie:登录态维持(需动态更新)。
二、爬虫核心逻辑实现
1.请求与反破解
动态生成请求间隔(time.sleep(random.uniform(1, 3)))模拟人工操作。代理IP池轮换(示例使用免费代理,生产环境建议付费服务):
proxies = {
"http": "http://IP:PORT", "https": "http://IP:PORT"} response = requests.get(url, headers=headers, proxies=proxies)
2.数据解析与存储 解析JSON响应中的rateContent字段,使用pandas结构化存储:
import pandas as pd df = pd.DataFrame(data["rateDetail"]["rateList"], columns=["content", "time"]) df.to_csv("comments.csv", index=False)
处理Unicode编码问题(如表情符号),指定encoding='gb18030'写入CSV。
三、反爬破解技巧
1.动态签名绕过
淘宝接口可能携带动态参数(如_t时间戳),需通过逆向JS代码生成签名。
2.验证码应对
触发验证码时自动切换IP或暂停爬取,避免账号封禁。
3.数据去重与清洗
使用hashlib生成评论内容MD5值,过滤重复数据。
注意事项
法律风险:仅用于合法数据分析,禁止商业爬取或滥用。
频率控制:单日请求量建议不超过1万条,避免触发风控。
通过以上步骤,可高效获取海量商品评论数据,适用于竞品分析、用户画像构建等场景。