
本文不做工具清单堆砌,而是给一套可执行路径:官方免费源优先,低频任务用 Google Sheets 或 Python,动态页面用 Playwright,最后用维护工时判断是否继续自建。
1. 免费数据源怎么选
亚马逊数据的免费来源可以分为四类:
- 官方源:Brand Analytics、SP-API、Product Advertising API、公开页面。
- 免费工具:Keepa、CamelCamelCamel、Helium 10 免费层、Jungle Scout 免费工具。
- 自助采集:Python、Playwright、Selenium、Octoparse 免费版。
- 公开数据集:Kaggle、GitHub、学术评论数据集。
商业项目优先考虑官方源,因为稳定性和合规边界更清楚。自助采集适合公开页面、低频监控和原型验证。公开数据集只适合研究,不适合实时运营。
2. Google Sheets 零代码方案
把商品链接放在 A1,标题可以这样抓:
=IMPORTXML(A1, "//span[@id='productTitle']")
价格可以尝试:
=IMPORTXML(A1, "//span[contains(@class,'a-price')]//span[@class='a-offscreen']")
局限很明显:动态内容抓不到,高频刷新会失败,XPath 经常需要改。它适合 10-30 条样本,不适合批量。
3. Python 抓公开搜索页
import csv
import time
import random
import requests
from bs4 import BeautifulSoup
headers = {
"User-Agent": "Mozilla/5.0 Chrome/124.0 Safari/537.36",
"Accept-Language": "en-US,en;q=0.9",
}
def scrape(keyword):
url = f"https://www.amazon.com/s?k={keyword.replace(' ', '+')}"
html = requests.get(url, headers=headers, timeout=20).text
soup = BeautifulSoup(html, "html.parser")
rows = []
for card in soup.select("div[data-component-type='s-search-result']"):
asin = card.get("data-asin")
title = card.select_one("h2 span")
price = card.select_one("span.a-offscreen")
rows.append({
"keyword": keyword,
"asin": asin,
"title": title.get_text(strip=True) if title else "",
"price": price.get_text(strip=True) if price else "",
})
return rows
rows = scrape("wireless earbuds")
with open("amazon_sample.csv", "w", newline="", encoding="utf-8") as f:
writer = csv.DictWriter(f, fieldnames=rows[0].keys())
writer.writeheader()
writer.writerows(rows)
time.sleep(random.uniform(3, 6))
这段代码只适合学习和轻量采样。上线前至少要补 5 件事:限速、重试、字段校验、原始 HTML 留档、异常告警。
4. Playwright 抓动态页面
from playwright.sync_api import sync_playwright
from bs4 import BeautifulSoup
def scrape_search(keyword):
with sync_playwright() as p:
browser = p.chromium.launch(headless=True)
page = browser.new_page(user_agent="Mozilla/5.0 Chrome/124.0 Safari/537.36")
page.goto(f"https://www.amazon.com/s?k={keyword}", wait_until="domcontentloaded")
page.wait_for_timeout(2500)
soup = BeautifulSoup(page.content(), "html.parser")
data = []
for slot in soup.select("div[data-component-type='s-search-result']"):
data.append({
"asin": slot.get("data-asin"),
"title": slot.select_one("h2 span").get_text(strip=True) if slot.select_one("h2 span") else "",
"raw_text": slot.get_text(" ", strip=True)[:200],
})
browser.close()
return data
Playwright 能处理更多动态内容,但维护成本也更高。真正难的是 Sponsored 广告位识别、滚动加载、多市场差异、验证码和 IP 限制。
5. SP-API 免费但不等于无门槛
SP-API 是卖家和开发者最值得优先尝试的免费官方方案。它的问题不是价格,而是权限:需要 Selling Partner 身份、应用配置、授权流程和速率配额。它适合合规拉取有权限的数据,不适合普通用户无限制抓任意公开情报。

6. 什么时候应该停止自建
建议把每月维护工时计入成本:
| 场景 | 月维护工时 | 真实成本判断 |
|---|---|---|
| 少量人工验证 | 2-4h | 免费工具够用 |
| 1-2 个市场低频监控 | 8-20h | 自建开始变贵 |
| 多市场高频采集 | 20-40h | 应考虑 API |

如果你的需求变成批量、稳定、持续,并且要覆盖 Sponsored 广告位,接入 Pangolinfo Amazon Scraper API通常比继续维护自建爬虫更便宜。需要让 Agent 自动调用数据,可以用 Pangolinfo Amazon Data MCP;运营同学想用对话方式取数,则可以看 Pangolinfo Amazon Scraper Skill
458



被折叠的 条评论
为什么被折叠?



