Amazon 评论爬虫示例
版本: v2.0.0
更新时间: 2025 年 8 月
特性: 高级 TLS 指纹伪装 + 智能反爬虫
这是一个专业级的 Amazon 评论爬虫示例,演示了完整的企业级爬取流程。采用先进的 JA3 指纹随机化技术,有效绕过 Amazon 的反爬虫检测。
🚀 核心特性
- ⚡ 高性能架构: 异步处理 + 智能重试,支持大规模批量爬取
- 🔒 企业级反爬虫: JA3 指纹随机化 + 真实浏览器模拟 + 代理轮换
- 🍪 智能 Cookie 管理: BitBrowser + Playwright 自动维护会话状态
- 🌍 多站点支持: 支持 12 个 Amazon 国际站点
- 🎯 精准数据解析: 多国评论格式兼容,支持图片/视频提取
- 📊 灵活数据导出: Excel/JSON 双格式输出,字段可配置
- 🛠️ 开发者友好: 模块化设计,易于集成和扩展
📁 项目结构
demo/
├── simple_review_crawler.py # 🎯 主爬虫引擎 (916行)
├── review_parser.py # 🔍 评论解析器 (579行)
├── config.py # ⚙️ 配置管理
├── requirements.txt # 📦 依赖包列表
├── asins.txt # 📋 ASIN列表文件
├── reviews.xlsx # 📊 示例输出数据
├── amazon_review_gui.py # 🖥️ GUI界面版本
├── build_gui.py # 📦 GUI打包脚本
├── requirements_gui.txt # 📋 GUI版本依赖
├── README_GUI.md # 📖 GUI版本文档
└── README.md # 📖 项目文档
核心组件说明
| 组件 | 功能 | 特点 |
|---|---|---|
SimpleReviewCrawler |
主爬虫类 | JA3 随机化、代理管理、Cookie 自动刷新 |
ReviewParser |
评论解析器 | 多国格式兼容、媒体提取、智能字段识别 |
config.py |
配置中心 | 站点映射、爬虫参数、输出设置 |
amazon_review_gui.py |
GUI 界面版本 | 图形化操作、实时监控、参数保存 |
build_gui.py |
打包工具 | 一键打包成 exe、无需 Python 环境运行 |
📋 版本选择指南
本项目提供两个版本,请根据自己的情况选择:
🎯 推荐选择
| 用户类型 | 推荐版本 | 原因 |
|---|---|---|
| 🔰 无编程基础用户 | GUI 版本 | 图形化界面,无需代码修改,一键运行 |
| 👨💻 有编程经验用户 | 命令行版本 | 更灵活的配置,便于二次开发 |
| 🏢 企业批量使用 | 命令行版本 | 便于集成到自动化系统 |
| 📚 学习研究用途 | 两个版本都可 | GUI 版本便于理解,命令行版本便于学习代码 |
🖥️ GUI 版本使用步骤(推荐新手)
1. 下载和启动
方式一:下载可执行文件
下载地址:点我下载review爬虫exe
1. 下载 Amazon评论爬虫_GUI_v2.0.zip
2. 解压到任意目录
3. 双击 Amazon评论爬虫GUI.exe 运行
方式二:源码运行
# 安装GUI版本依赖
pip install -r requirements_gui.txt
# 运行GUI程序
python amazon_review_gui.py
2. 界面配置
自行配置浏览器id与代理
在 GUI 界面中完成以下配置:
🔧 基础配置标签页:
-
浏览器 ID: 输入 BitBrowser 中的浏览器 ID
-
-
Amazon 站点: 选择目标站点(US、UK、DE 等)
-
ASIN 列表: 输入要爬取的产品 ASIN,每行一个
-
最大页数: 设置每个 ASIN 爬取的最大页数
-
输出文件: 选择 Excel 文件保存路径
⚙️ 高级配置标签页:
- 代理设置: 可选择启用 HTTP 代理
- JA3 随机化: 建议启用,提升反爬虫能力
- JSON 备份: 建议启用,双重数据保障
3. 开始爬取
- 点击
🚀 开始爬取按钮 - 实时观察右侧日志面板的进度和状态
- 等待任务完成,程序会自动保存数据
💻 命令行版本使用步骤(技术用户)
1. 安装依赖
pip install -r requirements.txt
注意: requests-go 是一个特殊的 HTTP 请求库,具有高级 TLS 指纹伪装功能和 JA3 随机化。如果安装失败,请参考 官方文档。
2. 准备 ASIN 文件
在 asins.txt 文件中放入要爬取的 ASIN,一行一个:
B08N5WRWNW
B07XJ8C8F5
B09G9FPHY6
3. 配置浏览器 ID
修改 simple_review_crawler.py 中的配置:
BROWSER_ID = "your_browser_id_here" # 替换为你的BitBrowser浏览器ID
MARKETPLACE = "US" # 站点代码:US, UK, DE, CA等
4. 运行爬虫
python simple_review_crawler.py
配置说明
🔧 配置文件详解 (config.py)
站点配置:
SITE_MAPPING = {
"US": "amazon.***", # 🇺🇸 美国站
"UK": "amazon.co.uk", # 🇬🇧 英国站
"DE": "amazon.de", # 🇩🇪 德国站
"JP": "amazon.co.jp", # 🇯🇵 日本站
# ... 支持12个站点
}
爬虫参数:
CRAWLER_CONFIG = {
"max_pages": 3, # 📄 每个ASIN最大页数
"page_delay": (2, 4), # ⏱️ 页面间隔(秒)
"asin_delay": (5, 10), # 🔄 ASIN间隔(秒)
"request_timeout": 25, # ⏰ 请求超时
"max_retries": 3, # 🔁 最大重试次数
}
输出配置:
OUTPUT_CONFIG = {
"excel_file": "reviews.xlsx", # 📊 Excel输出
"backup_json": True, # 💾 JSON备份
"json_file": "reviews.json", # 🗂️ JSON文件
}
📋 运行参数
| 参数 | 说明 | 默认值 | 示例 |
|---|---|---|---|
BROWSER_ID |
BitBrowser 浏览器 ID | - | "0d165bc9ae084946bec7048279a1cf26" |
MARKETPLACE |
Amazon 站点代码 | "US" |
"UK", "DE", "JP"
|
MAX_PAGES |
每个 ASIN 最大爬取页数 | 3 |
5, 10
|
ASIN_FILE |
ASIN 列表文件路径 | "asins.txt" |
"my_products.txt" |
OUTPUT_FILE |
输出 Excel 文件路径 | "reviews.xlsx" |
"results_2024.xlsx" |
支持的站点
-
US: amazon.*** (美国) -
UK: amazon.co.uk (英国) -
DE: amazon.de (德国) -
CA: amazon.ca (加拿大) -
FR: amazon.fr (法国) -
IT: amazon.it (意大利) -
ES: amazon.es (西班牙) -
AU: amazon.***.au (澳大利亚) -
JP: amazon.co.jp (日本)
输出数据格式
Excel 文件包含以下字段:
| 字段 | 说明 |
|---|---|
| asin | 产品 ASIN |
| page | 评论页数 |
| position | 页面内位置 |
| review_id | 评论 ID |
| reviewer_name | 评论者姓名 |
| review_title | 评论标题 |
| review_content | 评论内容 |
| rating | 评分(1-5 星) |
| review_date | 评论日期 |
| verified_purchase | 是否验证购买 |
| helpful_count | 有用投票数 |
工作流程
1. 读取asins.txt文件
↓
2. 初始化爬虫(指定浏览器ID)
↓
3. 获取代理IP
↓
4. 调用BitBrowser刷新Cookie
↓
5. 对每个ASIN:
- 检查产品是否存在
- 获取CSRF令牌
- 爬取评论数据(多页)
- 解析评论信息
↓
6. 保存所有评论到Excel文件
注意事项
- BitBrowser 配置: 确保 BitBrowser 正在运行,端口为 54345
- 浏览器 ID: 必须使用有效的浏览器 ID
- 代理服务: 确保代理 API 服务正常运行 (http://172.16.1.227:3001)
- 请求频率: 内置了随机延迟,避免请求过于频繁
- 错误处理: 遇到错误会跳过当前 ASIN,继续处理下一个
- 数据质量: 只保存有内容的评论数据
🏗️ 技术架构
⚡ 核心技术亮点
🔥 JA3 指纹随机化技术
采用业界领先的 requests-go 库,实现动态 TLS 指纹伪装:
# 🎯 每个ASIN自动生成独特的TLS指纹
def _create_session_for_asin(self, asin: str):
# 基础配置
self.current_tls_config.ja3 = requests_go.tls_config.random_ja3(base_ja3_str)
# 🔄 JA3指纹实时随机化
print(f"为ASIN {asin} 生成新的随机 JA3 指纹")
print(f"JA3: {str(self.current_tls_config.ja3)[:50]}...")
技术优势:
- ✅ 指纹多样性: 每次请求使用不同的 TLS 指纹,模拟真实用户行为
- ✅ 动态伪装: 支持 Chrome/Firefox/Safari 多种浏览器指纹
- ✅ 深度对抗: 绕过基于 JA3 指纹的高级检测系统
- ✅ 性能优化: 零延迟指纹生成,不影响爬取速度
# 📊 JA3指纹随机化效果示例
JA3-1: 771,4865-4866-4867-49195-49199,18-13-21-17513-43-11-0...
JA3-2: 771,4865-4866-4867-49195-49199,13-23-18-51-10-11-17513...
JA3-3: 771,4865-4866-4867-49195-49199,16-18-5-27-0-13-11-43...
🍪 智能 Cookie 管理
BitBrowser + Playwright 双重保障:
# 🚀 异步Cookie获取
async def _get_amazon_cookie_async(self):
async with async_playwright() as playwright:
browser = await chromium.connect_over_cdp(ws_url)
# 访问真实Amazon页面获取有效Cookie
await page.goto(f"https://www.{self.domain}/robots.txt")
🌐 多站点智能适配
支持 12 个国际站点,自动适配本地化格式:
| 站点 | 域名 | 特殊处理 |
|---|---|---|
| 🇺🇸 US | amazon.*** | 标准格式 |
| 🇬🇧 UK | amazon.co.uk | 英式日期格式 |
| 🇩🇪 DE | amazon.de | 德语评论解析 |
| 🇯🇵 JP | amazon.co.jp | 日语字符处理 |
| … | … | … |
📈 性能指标
基于实际测试的性能数据:
| 指标 | 数值 | 说明 |
|---|---|---|
| 爬取速度 | 50-80 评论/分钟 | 包含延迟和反爬虫措施 |
| 成功率 | 95%+ | 配置正确的情况下 |
| 内存使用 | ~100-200MB | 单进程运行 |
| 网络耗时 | 2-5 秒/页面 | 包含代理延迟 |
| 数据准确率 | 99.9% | 评论字段完整性 |
🔌 API 参考
SimpleReviewCrawler 类
class SimpleReviewCrawler:
def __init__(self, browser_id: str, marketplace: str = "US")
def refresh_cookie(self) -> bool # 刷新Cookie
def get_csrf_token(self, asin: str) -> bool # 获取CSRF令牌
def crawl_reviews(self, asin: str, max_pages: int) # 爬取评论
def get_proxy(self) -> bool # 获取代理IP
ReviewParser 类
class ReviewParser:
def parse_reviews(self, response_text: str, page_number: int) # 解析评论
def _extract_rating(self, review_element) -> float # 提取评分
def _extract_content(self, review_element) -> str # 提取内容
def _extract_media(self, review_element) -> Dict # 提取媒体
快速集成示例
from simple_review_crawler import SimpleReviewCrawler
# 🚀 快速开始
crawler = SimpleReviewCrawler("your_browser_id", "US")
crawler.refresh_cookie()
reviews = crawler.crawl_reviews("B08N5WRWNW", max_pages=3)
# 📊 处理结果
print(f"获取到 {len(reviews)} 条评论")
for review in reviews[:3]:
print(f"⭐ {review['rating']}星 - {review['title']}")
💡 扩展功能
🖥️ GUI 版本特有功能
- 📱 触屏友好: 支持高 DPI 显示和触屏操作
- 🎨 主题切换: 明亮/暗黑主题切换
- 📊 可视化报表: 爬取进度图表和统计分析
- 💾 任务队列: 批量任务管理和排队执行
- 🔔 系统通知: Windows 系统托盘通知
- 📋 历史记录: 爬取任务历史和结果对比
🛠️ 通用扩展功能
- 🌟 增加站点支持: 添加更多 Amazon 国际站点
- 🔍 智能筛选: 自定义评论筛选条件 (评分、日期、关键词)
- 🖼️ 媒体下载: 自动下载评论中的图片和视频
- 📈 增量更新: 只获取新增的评论数据
- 💾 数据库集成: 支持 MySQL、MongoDB 等数据库存储
- 📊 数据分析: 情感分析、词云生成、趋势分析
- 🔄 实时监控: 定时任务、邮件通知、API 接口
- 🚀 分布式部署: 多机器并行、负载均衡
📝 示例数据说明
reviews.xlsx - 示例输出文件,包含约 50 条真实评论数据,展示:
- ✅ 完整的评论字段结构
- ✅ 多种评分分布 (1-5 星)
- ✅ 不同长度的评论内容
- ✅ 验证购买和非验证购买
- ✅ 多媒体内容示例
字段说明:
{
"reviewId": "R12345...", # 评论唯一ID
"userName": "John D.", # 评论者姓名
"rating": 4.0, # 评分 (1-5星)
"title": "Great product!", # 评论标题
"reviewContent": "Very satisfied", # 评论内容
"date": "January 15, 2024", # 评论日期
"verifiedPurchase": true, # 是否验证购买
"helpfulVotes": 12, # 有用投票数
"images": ["https://..."], # 图片URLs
"videos": [{"url": "...", "thumbnail": "..."}], # 视频信息
"page": 1 # 页码
}
故障排除
常见问题
-
代理获取失败
- 检查代理 API 服务是否运行 (http://172.16.1.227:3001)
- 检查网络连接
- 代理失败时系统会在无代理模式下继续运行
-
Cookie 刷新失败
- 检查 BitBrowser 是否运行
- 确认浏览器 ID 正确
- 检查网络连接
-
CSRF 令牌获取失败
- Cookie 可能已过期,重新刷新
- 检查站点域名配置
- 代理可能被封,尝试重新获取
-
评论数据为空
- 产品可能没有评论
- 页面结构可能发生变化
- 检查反爬虫限制
- 代理 IP 可能被限制
-
Excel 保存失败
- 检查文件权限
- 确保 openpyxl 已安装
- 检查磁盘空间
📚 版本更新历史
v2.0.0 (2025 年 1 月)
🖥️ GUI 版本重大更新:
- 🆕 全新 GUI 图形化界面(PyQt5)
- 🆕 一键打包成 exe 可执行文件
- 🆕 实时进度监控和详细日志
- 🆕 参数配置保存和加载功能
- 🆕 智能错误诊断和解决建议
- 🆕 多线程架构,界面响应流畅
⚡ 技术架构升级:
- 🆕 新增 JA3 指纹随机化技术
- 🆕 重构代码架构,提升可维护性
- 🆕 增强多国评论解析能力
- 🆕 添加配置文件管理
- 🆕 完善错误处理和重试机制
- 🆕 优化性能,提升爬取效率
v1.0.0 (2024 年初)
- 🎉 初始版本发布
- ✅ 基础评论爬取功能
- ✅ BitBrowser 集成
- ✅ Excel 数据导出
🤝 贡献指南
欢迎贡献代码和建议!
- Fork 本项目
- 创建特性分支 (
git checkout -b feature/AmazingFeature) - 提交更改 (
git ***mit -m 'Add some AmazingFeature') - 推送到分支 (
git push origin feature/AmazingFeature) - 开启 Pull Request
📞 技术支持
📋 版本支持
-
🖥️ GUI 版本: 详见
README_GUI.md获取 GUI 版本专属支持信息 - 💻 命令行版本: 本文档提供完整技术支持
联系方式
- 🐛 问题报告: Issues
- 💬 gitee仓库:amazon_review_crawler
- 💬 技术交流: GUI 版本用户可通过界面日志提供详细错误信息
- 📧 联系邮箱:
- 📖 文档更新: 欢迎提交文档改进建议
Amazon 账号服务
- 🛒 账号获取: https://www.buy-user.***/
- 💬 客服咨询: @hnhyCd (Telegram),phanphuongnam170@gmail.***(邮箱)
- 🔒 账号类型: 支持各种类型和地区的 Amazon 账号
- 💎 质量保证: 提供稳定可靠的账号资源
⚖️ 免责声明
⚠️ 重要提醒: 本代码仅供学习和研究使用,请遵守 Amazon 的使用条款和相关法律法规。
使用原则:
- ✅ 合理使用: 控制请求频率,避免对服务器造成压力
- ✅ 尊重协议: 遵守网站的 robots.txt 和使用条款
- ✅ 学术研究: 仅用于学术研究和技术学习
- ✅ 法律合规: 遵守当地法律法规和数据保护条例
禁止行为:
- ❌ 商业用途或盈利性活动
- ❌ 大规模数据采集和存储
- ❌ 侵犯他人隐私和权益
- ❌ 恶意攻击或破坏行为
如果本项目对您有帮助,请给个 ⭐ Star 支持一下!
Made with ❤️ by Amazon Review Crawler Team