Docker容器化爬虫,基于 playwright-extra + Stealth 插件,专为绕过亚马逊反爬检测优化,同时支持通用动态网页爬取。
首次使用:在 skill 目录下执行一键构建脚本:
bash scripts/setup.sh
脚本会自动完成:构建 amazon-scraper 镜像 + 创建 ~/scrapes 输出目录。
amazon_handler.js)自动触发条件: URL包含 amazon.com,或用户提到亚马逊/Amazon/ASIN/BSR/选品/竞品/畅销榜/类目分析等关键词
根据URL自动识别页面类型:
| URL特征 | 页面类型 | 可获取字段 |
|---|---|---|
| --- | --- | --- |
/gp/bestsellers/ | 畅销榜 | rank, title, asin, price, rating, reviews, image, url |
/zg/new-releases/ | 新品榜 | 同上 |
/zg/movers-and-shakers/ | 飙升榜 | 同上 |
/s?k= 或 /s/ | 搜索结果 | title, asin, price, rating, reviews, image, url, boughtPastMonth, sponsored |
/dp/ 或 /gp/product/ | 产品详情 | title, asin, price, rating, reviews, brand, bsr, boughtPastMonth, dateFirstAvailable, category, bullets, details, image |
⚠️ 重要规则:
/s?k=关键词)或产品详情页(/dp/ASIN)/gp/bestsellers/,/zgbs/ 会返回 Page Not Found# 畅销榜(有排名,无月销)
docker run -t --rm amazon-scraper node assets/amazon_handler.js "https://www.amazon.com/gp/bestsellers/electronics"
# 搜索结果(有月销,无排名)
docker run -t --rm amazon-scraper node assets/amazon_handler.js "https://www.amazon.com/s?k=feather+duster"
# 产品详情(最全字段:BSR、品牌、卖点、月销)
docker run -t --rm amazon-scraper node assets/amazon_handler.js "https://www.amazon.com/dp/B001TQ6IHS"
# 多页爬取
docker run -t --rm amazon-scraper node assets/amazon_handler.js "URL" --pages 2
# 保存结果到文件
docker run -t --rm -v ~/scrapes:/data amazon-scraper node assets/amazon_handler.js "URL" --output result.json
# 用自己的代理覆盖内置配置
docker run -t --rm -e AMAZON_PROXIES="http://user:***@host:8001,..." amazon-scraper node assets/amazon_handler.js "URL"
输出格式: JSON
{
"status": "SUCCESS",
"type": "bestsellers|search|product-detail",
"category": "品类名",
"totalProducts": 30,
"scrapedAt": "ISO时间",
"products": [
{
"rank": 1,
"title": "产品名",
"asin": "B001TQ6IHS",
"price": 9.94,
"priceStr": "$9.94",
"rating": 4.6,
"reviews": 20547,
"boughtPastMonth": "1K+",
"image": "https://...",
"url": "https://..."
}
]
}
main_handler.js)触发条件: 非Amazon的URL,或用户提到爬取/抓取任意网页内容
playwright-extra + Stealth 架构--output 文件保存document.body.innerText(纯文本,去广告噪音){status:"SUCCESS", type:"GENERIC", title, data}# 通用爬取(代理已内置)
docker run -t --rm amazon-scraper node assets/main_handler.js "https://任意网址"
# 保存文件
docker run -t --rm -v ~/scrapes:/data \
amazon-scraper node assets/main_handler.js "https://任意网址" --output page.json
用户给了URL?
├─ 包含 amazon.com → 用 amazon_handler.js
│ ├─ 需要月销量? → 建议用搜索URL(/s?k=) 或详情页(/dp/)
│ └─ 需要排名? → 用畅销榜URL(/gp/bestsellers/)
└─ 其他网站 → 用 main_handler.js (通用模式)
用户没给URL,只说了需求?
├─ "爬亚马逊XX品类Top" / "XX类目排行" / "XX畅销榜" → 构造 https://www.amazon.com/gp/bestsellers/品类
├─ "搜亚马逊XX" / "XX关键词搜索" / "找XX产品" → 构造 https://www.amazon.com/s?k=关键词
├─ "分析某个ASIN" / "看看这个产品" / "XX的详情" → 构造 https://www.amazon.com/dp/ASIN
├─ "XX的月销量" / "XX卖了多少" / "XX销量怎么样" → 用搜索页或详情页(有boughtPastMonth)
├─ "竞品分析" / "竞品调研" / "对手在卖什么" → 先搜索再逐个爬详情
├─ "选品" / "什么好卖" / "品类机会" / "市场调研" → Best Sellers + 搜索结合
└─ 其他网页 → 先web_search找到URL,再用通用模式爬
| 用户说 | 操作 |
|---|---|
| --- | --- |
| "帮我看看亚马逊XX品类" | 爬 /gp/bestsellers/品类 畅销榜 |
| "XX在亚马逊卖得怎么样" | 搜索 /s?k=XX 看月销 |
| "分析一下这个ASIN: BXXXXXXXXX" | 爬 /dp/ASIN 详情页 |
| "XX品类有什么机会" | 畅销榜 + 搜索 综合分析 |
| "帮我爬这个链接" | 判断URL类型,选对应handler |
| "帮我抓XX网站的内容" | 通用模式 |
| "搜一下XX的竞品" | 搜索页爬取 + 分析 |
| "XX月销多少" / "XX一个月卖多少" | 搜索页或详情页 |
| "帮我看看top 100" / "热门产品" | Best Sellers畅销榜 |
| "新品有哪些" / "最近上了什么新品" | /zg/new-releases/ |
| "什么产品涨得快" / "飙升榜" | /zg/movers-and-shakers/ |
本 skill 已内置 5 个轮询代理,无需额外配置即可直接使用。
如需覆盖内置代理,可通过环境变量注入自己的代理:
| 变量 | 用途 | 格式 |
|---|---|---|
| --- | --- | --- |
AMAZON_PROXY | 单代理 | http://user:pass@host:port |
AMAZON_PROXIES | 多代理轮询 | http://u:p@h1:8001,http://u:p@h2:8002,... |
config/proxies.json,可直接修改文件更新代理列表共 3 个版本