AMAZON_CRAWLER_README.md
6.9 KB
Amazon商品数据爬虫使用说明
概述
这是一个使用万邦API爬取亚马逊商品数据的Python脚本。脚本会读取查询列表文件,逐个请求API,并将结果保存为JSON文件。
文件说明
amazon_crawler.py- 基础版爬虫脚本amazon_crawler_v2.py- 增强版爬虫脚本(推荐使用)config.example.py- 配置文件示例queries.txt- 搜索关键词列表(每行一个)amazon_results/- 结果保存目录(自动创建)amazon_crawler.log- 运行日志文件
快速开始
1. 安装依赖
pip install requests
2. 配置API密钥
有三种方式配置API密钥:
方式1:使用配置文件(推荐)
cd data_crawling
cp config.example.py config.py
# 编辑 config.py,填入真实的API密钥
方式2:使用命令行参数
python amazon_crawler_v2.py --key YOUR_KEY --secret YOUR_SECRET
方式3:使用环境变量
export ONEBOUND_API_KEY="your_key_here"
export ONEBOUND_API_SECRET="your_secret_here"
python amazon_crawler_v2.py
3. 运行爬虫
基础版运行
# 编辑 amazon_crawler.py,填入API密钥
python amazon_crawler.py
增强版运行
# 使用默认配置
python amazon_crawler_v2.py
# 自定义参数
python amazon_crawler_v2.py \
--key YOUR_KEY \
--secret YOUR_SECRET \
--queries queries.txt \
--delay 2.0 \
--start 0 \
--max 100 \
--output amazon_results
命令行参数说明
| 参数 | 说明 | 默认值 |
|---|---|---|
--key |
API Key | 从配置文件或环境变量读取 |
--secret |
API Secret | 从配置文件或环境变量读取 |
--queries |
查询文件路径 | data_crawling/queries.txt |
--delay |
请求间隔(秒) | 2.0 |
--start |
起始索引(断点续爬) | 0 |
--max |
最大爬取数量 | None(全部) |
--output |
结果保存目录 | data_crawling/amazon_results |
使用示例
示例1:测试前10个查询
python amazon_crawler_v2.py --max 10
示例2:从第100个查询开始继续爬取
python amazon_crawler_v2.py --start 100
示例3:加快爬取速度(减少延迟)
python amazon_crawler_v2.py --delay 1.0
示例4:使用自定义查询文件
python amazon_crawler_v2.py --queries my_queries.txt
示例5:完整参数示例
python amazon_crawler_v2.py \
--key "your_api_key" \
--secret "your_api_secret" \
--queries queries.txt \
--delay 2.0 \
--start 0 \
--max 100 \
--output my_results
API参数说明
根据万邦API文档,支持以下搜索参数:
| 参数 | 说明 | 示例 |
|---|---|---|
q |
搜索关键字 | "Mobile Phone Holder" |
start_price |
开始价格 | 10 |
end_price |
结束价格 | 100 |
page |
页码 | 1 |
cat |
分类ID | - |
discount_only |
仅折扣商品 | yes/no |
sort |
排序方式 | - |
page_size |
每页数量 | 100 |
cache |
使用缓存 | yes/no |
result_type |
返回格式 | json |
lang |
语言 | cn/en |
结果文件格式
每个查询的结果保存为单独的JSON文件,文件名格式:
0001_Bohemian_Maxi_Dress.json
0002_Vintage_Denim_Jacket.json
...
JSON文件结构示例:
{
"items": {
"item": [
{
"detail_url": "https://www.amazon.com/...",
"num_iid": "B07F8S18D5",
"pic_url": "https://...",
"price": "9.99",
"reviews": "53812",
"sales": 10000,
"stars": "4.7",
"title": "商品标题"
}
],
"page": "1",
"page_size": 100,
"real_total_results": 700,
"q": "搜索词"
},
"error_code": "0000",
"reason": "ok"
}
日志文件
运行日志保存在 amazon_crawler.log,包含:
- 每个请求的状态
- 成功/失败统计
- 错误信息
- 爬取进度
示例日志:
2025-01-07 10:00:00 - INFO - Amazon爬虫启动
2025-01-07 10:00:01 - INFO - [1/5024] (0.0%) - Bohemian Maxi Dress
2025-01-07 10:00:02 - INFO - ✓ 成功: Bohemian Maxi Dress - 获得 700 个结果
注意事项
1. API限制
- 注意API的请求限制(每日/每月配额)
- 建议设置适当的延迟时间(--delay参数)
- 从API响应中可以查看配额信息:
api_info字段
2. 断点续爬
如果爬取中断,可以使用 --start 参数从指定索引继续:
# 从第1000个查询继续
python amazon_crawler_v2.py --start 1000
3. 查询文件格式
queries.txt 文件要求:
- UTF-8 编码
- 每行一个查询关键词
- 空行会被自动跳过
4. 错误处理
- 请求失败的查询会保存错误信息到JSON文件
- 所有错误都会记录在日志文件中
- 可以通过日志文件查找失败的查询并重新爬取
5. 结果分析
可以编写脚本统计和分析爬取结果:
import json
from pathlib import Path
results_dir = Path("amazon_results")
total_items = 0
for json_file in results_dir.glob("*.json"):
with open(json_file) as f:
data = json.load(f)
if data.get('error_code') == '0000':
items = data.get('items', {}).get('item', [])
total_items += len(items)
print(f"共爬取 {total_items} 个商品")
性能优化
1. 并发爬取
当前脚本是串行爬取,如果需要提高速度,可以:
- 将查询列表分割成多个文件
- 使用多个进程同时运行
- 或修改脚本支持多线程/异步请求
2. 内存优化
如果查询数量很大(如5024个),建议:
- 使用
--max参数分批爬取 - 定期清理日志文件
3. 网络优化
- 选择网络稳定的环境运行
- 可以增加重试机制
- 使用代理(如有需要)
故障排除
问题1:API密钥错误
错误: 未配置API密钥!
解决:检查配置文件、命令行参数或环境变量是否正确设置
问题2:请求超时
请求失败: timeout
解决:
- 检查网络连接
- 增加超时时间(修改脚本中的
timeout参数) - 检查API服务是否正常
问题3:API配额耗尽
API返回错误: quota exceeded
解决:
- 等待配额重置
- 升级API套餐
- 使用
--max参数限制爬取数量
问题4:文件编码错误
UnicodeDecodeError
解决:确保 queries.txt 是 UTF-8 编码
扩展功能
如果需要扩展功能,可以修改脚本添加:
- 多页爬取:每个查询爬取多页结果
- 数据过滤:按价格、评分等条件过滤商品
- 数据库存储:将结果存入数据库而非JSON文件
- 重试机制:失败的请求自动重试
- 代理支持:通过代理服务器发送请求
- 异步请求:使用 aiohttp 实现并发爬取
联系方式
如有问题,请查看:
- 万邦API文档:
万邦API_亚马逊.md - 项目README:
README.md - 日志文件:
amazon_crawler.log