我测试了 4 种用 Python 抓取亚马逊 Best Sellers 的方法,结果……

最后更新于 April 17, 2026

上周末,我为了用四种不同方式抓取亚马逊 Best Sellers 页面,整整灌下了一大壶咖啡。两种方法效果很好,一种差点把我的 IP 搞进黑名单,还有一种只要点两下鼠标就能搞定。下面是我学到的全部经验。

亚马逊是一个体量惊人的电商市场——,再加上每小时更新一次的 Best Sellers Rank(BSR)机制。如果你在做 FBA 选品、竞品定价分析,或者只是想在对手之前先一步捕捉趋势,Best Seller 数据就是一座金矿。

但把这些数据从亚马逊里提取出来,再放进表格里?这件事就开始变得有意思了。我测试了 requests + BeautifulSoup、Selenium、抓取 API,以及 (我们自己的免代码 AI 网页爬虫),看看哪种方式真的好用,哪种会让你对着 CAPTCHA 页面发呆。

什么是 Amazon Best Sellers?为什么你应该关心它?

Amazon Best Sellers Rank(BSR)是亚马逊的实时排行榜,会按照各个类目内的销量给商品排名。你可以把它理解成一个每小时更新一次的人气榜,依据的是近期和历史销售数据。亚马逊官方的说法是:

“Amazon Best Sellers 的计算基于亚马逊销售数据,并每小时更新,以反映亚马逊上每个商品的近期和历史销量。”——

Best Sellers 页面会展示每个类目前 100 个商品,分成两页,每页 50 个。第一页是 #1–50,第二页是 #51–100。亚马逊已经明确表示,页面浏览量和客户评价不会影响 BSR——它完全由销量驱动。

谁会关心这些数据?做 FBA 选品的电商卖家、搭建竞品情报系统的销售团队、追踪定价趋势的运营团队,以及研究类目增长的市场分析人员。按我的经验,只要你在亚马逊上卖货,或者和亚马逊正面竞争,最后都会需要把这些数据整理到表格里。

为什么要用 Python 抓取 Amazon Best Sellers?

手动做产品调研真的很耗时间。根据一项 ,员工每周有 9.3 小时都花在搜索和收集信息上。对电商团队来说,这意味着要不停点击亚马逊页面、复制商品名和价格、再粘贴到表格里——下周还得把整套流程再来一遍。

下面这张表能快速看出,为什么抓取 Best Sellers 数据很值得做:

使用场景你能拿到什么受益人群
FBA 选品调研通过 BSR 和评论数识别高需求、低竞争商品亚马逊卖家、dropshipper
竞品定价监控跟踪你所在类目前列商品的价格变化电商团队、定价分析师
市场趋势观察发现正在上升的类目和季节性变化产品经理、市场研究人员
线索开发建立畅销品牌及其产品线名单销售团队、B2B 拓客
竞品分析把你的产品与类目头部商品做对标品牌经理、战略团队

回报是真实存在的:一项针对 2,700 名商业从业者的 显示,AI 工具平均每周可为电商从业者节省 。而使用自动化价格追踪的卖家,拿下 Buy Box 的时间占比达到 ,相比人工追踪的 42% 高出不少——这带来了 37% 的销售提升,核心原因就是能更快响应价格变化。

用 Python 抓取 Amazon Best Sellers 的 4 种方式:快速对比

在进入逐步教程之前,先给你一张我希望自己一开始就有的对比表。它能帮你根据实际情况选出最合适的方法:

对比维度requests + BS4Selenium抓取 API(如 Scrape.do)Thunderbit(免代码)
上手难度中等高(驱动、浏览器)低(API key)很低(Chrome 扩展)
处理懒加载是(模拟滚动)是(渲染后的 HTML)是(AI 负责渲染)
抗封禁能力低(容易被封 IP)中等(可被识别)高(轮换代理)高(云端 + 浏览器模式)
维护成本高(选择器易失效)高(驱动更新 + 选择器)很低(AI 自动适配页面变化)
成本免费免费付费(按请求计费)免费套餐 + 付费方案
最适合一次性抓取、学习JS 重度页面、需登录页面大规模 / 生产环境非开发人员、快速调研、周期性监控

如果你想先学 Python 抓取基础,可以从方法 1 或 2 开始。如果你需要生产级的稳定性,可以选择方法 3。如果你想不写代码、两次点击就拿到结果,直接跳到方法 4。

开始之前

  • 难度: 初级到中级(取决于方法)
  • 所需时间: Thunderbit 约 15 分钟,Python 方法约 45 分钟
  • 你需要准备: Python 3.8+(方法 1–3)、Chrome 浏览器、(方法 4)、以及一个目标 Amazon Best Sellers 类目 URL

方法 1:用 requests + BeautifulSoup 抓取 Amazon Best Sellers

这是最轻量、也最适合新手的方法——不用浏览器自动化,只用 HTTP 请求和 HTML 解析。但它也让我最深刻地体验到了亚马逊的反爬机制。

第 1 步:搭建环境

先安装所需依赖:

1pip install requests beautifulsoup4 pandas

然后导入模块:

1import requests
2from bs4 import BeautifulSoup
3import pandas as pd
4import random
5import time

第 2 步:使用真实请求头发送请求

亚马逊会拦截看起来像机器人的请求。最基础的防御方式是使用一个能模拟真实浏览器的 User-Agent 请求头。下面这段代码包含了一组当前较真实的 User-Agent 字符串(来源:,2026 年 3 月):

1USER_AGENTS = [
2    "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/147.0.0.0 Safari/537.36",
3    "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/147.0.0.0 Safari/537.36",
4    "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:149.0) Gecko/20100101 Firefox/149.0",
5    "Mozilla/5.0 (Macintosh; Intel Mac OS X 15.7; rv:149.0) Gecko/20100101 Firefox/149.0",
6    "Mozilla/5.0 (Macintosh; Intel Mac OS X 15_7_5) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/26.0 Safari/605.1.15",
7]
8headers = {"User-Agent": random.choice(USER_AGENTS)}
9url = "https://www.amazon.com/Best-Sellers-Electronics/zgbs/electronics/"
10response = requests.get(url, headers=headers)
11print(response.status_code)  # 应该返回 200

如果你看到 200 状态码,说明请求成功了。如果出现 503,或者被重定向到 CAPTCHA 页面,那就说明亚马逊已经识别出你的请求了。

第 3 步:用 BeautifulSoup 解析商品数据

用浏览器开发者工具检查亚马逊页面 HTML(右键 → 检查)。商品容器使用的是 gridItemRoot 这个 ID。在每个容器里,你可以找到商品名称、价格、评分和链接。

1soup = BeautifulSoup(response.text, "html.parser")
2products = []
3for item in soup.find_all("div", id="gridItemRoot"):
4    title_tag = item.find("div", class_="_cDEzb_p13n-sc-css-line-clamp-3_g3dy1")
5    price_tag = item.find("span", class_="_cDEzb_p13n-sc-price_3mJ9Z")
6    link_tag = item.find("a", class_="a-link-normal")
7    title = title_tag.get_text(strip=True) if title_tag else "N/A"
8    price = price_tag.get_text(strip=True) if price_tag else "N/A"
9    url = "https://www.amazon.com" + link_tag["href"] if link_tag else "N/A"
10    products.append({"标题": title, "价格": price, "URL": url})

提醒:_cDEzb_ 开头的 class 名称是亚马逊 CSS 模块生成的哈希值,平台会定期重新生成。gridItemRoot 这个 ID 和 a-link-normal 这个 class 相对更稳定,但在正式运行前,最好还是先用 DevTools 核实一下选择器。

第 4 步:导出为 CSV

1df = pd.DataFrame(products)
2df.to_csv("amazon_best_sellers.csv", index=False)
3print(f"已抓取 {len(products)} 个商品")

你会遇到什么情况,以及哪里会出问题

在我的测试中,这种方法只返回了大约 30 个商品,而不是 50 个。这不是代码 bug,而是亚马逊的懒加载机制导致的。首屏只会渲染大约 30 个商品,剩余内容要等滚动后才会出现,而 requests 无法执行 JavaScript。

其他限制包括:

  • 如果不轮换代理,IP 很快就会被封(我在短时间内连续请求大约 15 次后就被拦截了)
  • 亚马逊更新页面结构时,CSS 选择器会失效——而且这种情况经常发生
  • 默认不处理分页

如果你是想学习 Python 抓取,这个方法非常适合。但如果拿来做生产环境,它就显得很脆弱。

方法 2:用 Selenium 抓取 Amazon Best Sellers

Selenium 通过运行真实浏览器来解决懒加载问题——配置更重一点,但它可以抓到每页全部 50 个商品。

第 1 步:安装 Selenium

1pip install selenium pandas

好消息是,从 Selenium 4.6+ 开始,你不再需要 webdriver-manager。Selenium Manager 会自动帮你处理驱动下载。

1from selenium import webdriver
2from selenium.webdriver.chrome.options import Options
3from selenium.webdriver.common.by import By
4from selenium.webdriver.common.keys import Keys
5import time
6import pandas as pd
7options = Options()
8options.add_argument("--headless=new")
9options.add_argument("--window-size=1920,1080")
10options.add_argument("--disable-blink-features=AutomationControlled")
11driver = webdriver.Chrome(options=options)

--headless=new 参数(Chrome 109+ 引入)使用的是和有界面 Chrome 相同的渲染管线,因此更不容易被亚马逊识别出来。

第 2 步:滚动页面,突破懒加载

这一步就是 Selenium 值得多花配置时间的原因。Amazon Best Sellers 一开始只加载大约 30 个商品,剩下的要滚动后才会出现。

1def scroll_page(driver, scrolls=5, delay=2):
2    for _ in range(scrolls):
3        driver.find_element(By.TAG_NAME, "body").send_keys(Keys.PAGE_DOWN)
4        time.sleep(delay)
5driver.get("https://www.amazon.com/Best-Sellers-Electronics/zgbs/electronics/")
6time.sleep(3)
7scroll_page(driver)

滚动之后,50 个商品应该都会渲染到 DOM 里。我的测试发现,5 次 Page Down、每次间隔 2 秒已经够用了,但你可能需要根据网络速度做调整。

第 3 步:提取商品数据

1items = driver.find_elements(By.ID, "gridItemRoot")
2products = []
3for item in items:
4    try:
5        title = item.find_element(By.CSS_SELECTOR, "div._cDEzb_p13n-sc-css-line-clamp-3_g3dy1").text
6    except:
7        title = "N/A"
8    try:
9        price = item.find_element(By.CSS_SELECTOR, "span._cDEzb_p13n-sc-price_3mJ9Z").text
10    except:
11        price = "N/A"
12    try:
13        url = item.find_element(By.CSS_SELECTOR, "a.a-link-normal").get_attribute("href")
14    except:
15        url = "N/A"
16    products.append({"标题": title, "价格": price, "URL": url})

把每个字段提取都包在 try/except 里很重要——有些商品可能缺货,或者某些字段为空,你不希望一个坏元素拖垮整个抓取过程。

第 4 步:处理分页

亚马逊把 100 个 Best Sellers 分成两页,并使用不同的 URL 结构:

1urls = [
2    "https://www.amazon.com/Best-Sellers-Electronics/zgbs/electronics/",
3    "https://www.amazon.com/Best-Sellers-Electronics/zgbs/electronics/ref=zg_bs_pg_2_electronics?_encoding=UTF8&pg=2"
4]
5all_products = []
6for url in urls:
7    driver.get(url)
8    time.sleep(3)
9    scroll_page(driver)
10    # ... 按上面的方法提取商品 ...
11    all_products.extend(products)
12driver.quit()

你会得到什么结果

在我的测试中,Selenium 成功抓到了每页全部 50 个商品——明显优于 requests + BS4。缺点也很明显:每页大约要花 45 秒(包括滚动延时),而且如果不轮换代理,跑太多次后还是会被标记。即使加了反检测参数,Selenium 仍然可能被亚马逊的机器人识别系统检测出来——如果你真的要做大规模抓取,还需要额外措施(见下面的防封指南)。

其他痛点包括:

  • WebDriver 版本不匹配的问题偶尔还是会发生,尽管 Selenium Manager 已经让这种情况少很多
  • 只要亚马逊改了 DOM,CSS 选择器就要跟着改
  • 内存占用很高——每个浏览器实例会吃掉 200–400MB RAM

方法 3:用抓取 API 抓取 Amazon Best Sellers

抓取 API 的思路就是“把难题交给别人处理”。像 Scrape.do、Oxylabs 和 ScrapingBee 这类服务会帮你处理代理轮换、JavaScript 渲染和反爬措施——你只要发一个 URL,就能拿到 HTML 或 JSON。

工作原理

你把目标 URL 发给 API 接口。API 会在它们自己的基础设施上用真实浏览器渲染页面,轮换代理,处理 CAPTCHA,然后返回干净的 HTML。接着你再像往常一样用 BeautifulSoup 解析返回结果即可。

第 1 步:通过 API 发送请求

下面是一个使用 Scrape.do 的示例(价格从每月 29 美元起,可获得 150,000 credits,1 credit = 1 次请求,不论是否渲染):

1import requests
2from bs4 import BeautifulSoup
3api_token = "YOUR_API_TOKEN"
4target_url = "https://www.amazon.com/Best-Sellers-Electronics/zgbs/electronics/"
5api_url = f"https://api.scrape.do?token={api_token}&url={target_url}&render=true&geoCode=us"
6response = requests.get(api_url)
7soup = BeautifulSoup(response.text, "html.parser")

接下来,解析方式和方法 1 完全一样——相同的选择器,相同的提取逻辑。

价格现实检验

下面是几家主流 API 按每 1,000 次 Amazon 请求计算的大致最低成本:

服务商每 1,000 次请求成本备注
Scrape.do约 $0.19固定费率,不按 credit 倍数计算
Oxylabs约 $1.80JavaScript 渲染有 5 倍倍率
ScrapingBee约 $4.90高级功能倍率为 5–25 倍
Bright Data$5.00+数据最全面(每个商品 686 个字段),但速度最慢(约 66 秒/请求)

优缺点

优点: 可靠性高(头部服务商在 Amazon 上的成功率约为 ),无需维护驱动,自动处理反爬,而且可扩展性强。

缺点: 按请求付费(规模越大成本越高),你仍然需要自己写解析代码,而且还是会受到 CSS 选择器变化的影响。对于每月 100,000 页来说,总成本差异会非常明显:自建方案三年总成本大约为 ——节省高达 71%。

一般来说,500K–1M 次请求/月是一个临界点。低于这个规模时,API 节省下来的时间通常远远超过它的成本。

方法 4:用 Thunderbit 抓取 Amazon Best Sellers(无需 Python)

先说明一下:我在 Thunderbit 工作,所以这一节请你带着这个背景来理解。不过我确实把这四种方法都连着测试了一遍,而拿到数据所花的时间差异真的很明显。

是一款作为 Chrome 扩展运行的 AI 网页爬虫。核心思路是:你不用自己写 CSS 选择器或 Python 代码,AI 会直接读取页面并判断要提取哪些数据。针对 Amazon Best Sellers,Thunderbit 甚至已经内置了可一键使用的模板。

第 1 步:安装 Thunderbit Chrome 扩展

进入 ,点击“添加到 Chrome”。然后注册一个免费账号——免费套餐的 credits 足够你先测试一轮。

第 2 步:打开 Amazon Best Sellers 页面

在 Chrome 中打开任意 Amazon Best Sellers 类目页。例如: https://www.amazon.com/Best-Sellers-Electronics/zgbs/electronics/

第 3 步:点击“AI Suggest Fields”

打开 Thunderbit 侧边栏,点击“AI Suggest Fields”。AI 会分析页面结构,并自动建议字段:商品名称、价格、评分、图片 URL、卖家、商品 URL、排名。在我的测试里,它大约 3 秒就把所有相关字段都识别出来了。

amazon-thunderbit-product-data.webp

你可以重命名、删除或新增列。你甚至可以给每个字段添加自定义 AI 提示词,例如输入“分类为 Electronics/Apparel/Home”,给每个商品加上类目标签。

第 4 步:点击“Scrape”

点击“Scrape”按钮。Thunderbit 会把页面中的所有商品数据整理成一个结构化表格。在云端模式下,它可以并行处理最多 50 个页面,自动处理懒加载和分页。

第 5 步:免费导出

点击“Export”并选择目标位置:Excel、Google Sheets、Airtable 或 Notion。所有套餐都支持免费导出,没有隐藏费用。

product-data-export.webp

从打开页面到得到完整表格,整个过程我大约只花了 90 秒。对比来看,方法 1 用了大约 20 分钟(包括排查懒加载问题),方法 2 用了大约 35 分钟(包括 Selenium 配置),方法 3 也用了大约 15 分钟(包括 API 账号设置)。

为什么 Thunderbit 对 Amazon 特别友好

因为 AI 每次都会重新读取页面,所以它能自动适应页面结构变化——你不需要维护 CSS 选择器。这直接解决了抓取社区里最常见的抱怨之一:“基础网页爬虫根本不够用,你得为元素变化加一堆兜底逻辑。” 当亚马逊改动 DOM 时(这种事很常见),你不用改任何东西。

云端抓取模式会透明地处理代理轮换、页面渲染和反爬措施。对于想要“开箱即用”方案的用户来说,这等于把整个防封难题都省掉了。

防封指南:如何避免被亚马逊拦截

亚马逊的机器人检测非常激进。我在测试时就临时被封了 IP,而论坛里也有用户说遇到同样问题:“到处都是错误,亚马逊甚至开始把我重定向到首页。” 如果你打算走 Python 路线(方法 1–3),这一节非常关键。

下面是一个从基础到进阶的分层策略:

1. 轮换 User-Agent 字符串

反复发送同一个 User-Agent 会很可疑。使用方法 1 里的 5+ 个字符串池,并在每次请求时随机选一个:

1headers = {"User-Agent": random.choice(USER_AGENTS)}

2. 在请求之间加入随机延迟

固定延迟很容易被识别(太规律了)。随机延迟更安全:

1time.sleep(random.uniform(2, 5))

我的测试发现,在请求之间等待 2–5 秒,小批量抓取(少于 50 次请求)时基本能避免被注意。更大规模运行时,可以调整到 3–7 秒。

3. 使用代理轮换

这一步最关键。 显示,住宅代理在 Amazon 上的平均成功率约为 94%,而数据中心代理只有约 59%——差了 35 个百分点。亚马逊的检测系统会结合 TLS 指纹、行为分析和按 IP 限速,所以普通数据中心 IP 往往几秒内就会被标记。

住宅代理更贵一些(根据服务商不同,每 GB 大约 $2–$12),但可靠性高得多。示例代码如下:

1proxies = {
2    "http": "http://user:pass@residential-proxy.example.com:8080",
3    "https": "http://user:pass@residential-proxy.example.com:8080"
4}
5response = requests.get(url, headers=headers, proxies=proxies)

4. 强化浏览器指纹(Selenium)

1options.add_argument('--disable-blink-features=AutomationControlled')
2options.add_experimental_option("excludeSwitches", ["enable-automation"])
3options.add_experimental_option('useAutomationExtension', False)
4# 初始化 driver 后,移除 navigator.webdriver 标记
5driver.execute_cdp_cmd('Page.addScriptToEvaluateOnNewDocument', {
6    'source': "Object.defineProperty(navigator, 'webdriver', {get: () => undefined})"
7})

5. 管理会话和 Cookies

在请求之间保留 cookies,会让你的爬虫更像真实用户会话:

1session = requests.Session()
2# 先访问首页,拿到更真实的 cookies
3session.get("https://www.amazon.com", headers=headers)
4time.sleep(2)
5# 再抓取目标页面
6response = session.get(target_url, headers=headers)

6. 什么时候干脆跳过这些麻烦

对于不想自己管理这些细节的用户,Thunderbit 的云端抓取会透明地处理代理轮换、渲染和反爬。抓取 API 也会开箱即用地处理大部分问题。按我的经验,调试防封问题花掉的时间,往往比编写真正的抓取代码还多——所以“开箱就能用”的方案确实很值。

子页面增强:抓取商品详情页,获取更丰富的数据

Best Sellers 列表页只显示基础信息——标题、价格、评分、排名。但如果你做 FBA 调研,真正有价值的数据其实在单个商品详情页里。下面是如果只抓列表页,你会错过哪些内容:

字段列表页商品详情页
商品名称
价格
评分
BSR 排名✅(含子类目排名)
品牌
ASIN
首次上架日期
尺寸/重量
卖家数量
项目符号功能
Buy Box 持有者

“首次上架日期”这个字段尤其有价值——它能告诉你一个商品在市场上存在了多久,这是竞争分析中的关键指标。了解卖家数量和 Buy Box 持有者,也能帮助你判断某个细分市场值不值得进入(如果亚马逊自己持有超过 30% 的 Buy Box 份额,那竞争会非常难打)。

Python 方式:遍历商品 URL

拿到列表页中的商品 URL 后,可以加延迟逐个访问:

1for product in products:
2    time.sleep(random.uniform(3, 6))
3    detail_response = session.get(product["URL"], headers={"User-Agent": random.choice(USER_AGENTS)})
4    detail_soup = BeautifulSoup(detail_response.text, "html.parser")
5    # 提取品牌
6    brand_tag = detail_soup.find("a", id="bylineInfo")
7    product["品牌"] = brand_tag.get_text(strip=True) if brand_tag else "N/A"
8    # 从页面源代码或 URL 中提取 ASIN
9    # 从商品详情表中提取首次上架日期
10    # ... 其他字段 ...

友情提醒:连续访问 100 个单独商品页会明显增加被封风险。你需要预留代理轮换和更长的延迟。

Thunderbit 方式:一键抓取子页面

把列表页抓成表格后,在 Thunderbit 里点击“Scrape Subpages”。AI 会自动访问每个商品 URL,并把品牌、ASIN、规格、功能等额外列补充到表格里。无需额外代码、选择器或配置。这对需要完整信息做采购决策,但又不想维护详情页解析器的电商团队尤其有用。

自动化周期性抓取:持续监控 Best Sellers 变化

一次性抓取当然有用,但真正的竞争优势来自持续监控。跟踪哪些商品在上升、哪些商品在下滑,尽早发现趋势,持续观察价格在数周或数月中的变化——这才是把普通调研变成数据驱动决策的关键。

Python 方式:用 Cron 定时

在 Linux/Mac 上,你可以用 cron 来定时运行 Python 脚本。下面是每天早上 8 点抓取一次的 crontab 配置:

10 8 * * * /usr/bin/python3 /home/user/amazon_scraper.py >> /home/user/logs/scrape.log 2>&1

如果你想每周一早上 9 点抓取一次:

10 9 * * 1 /usr/bin/python3 /home/user/amazon_scraper.py >> /home/user/logs/scrape.log 2>&1

在 Windows 上,可以用任务计划程序实现同样的效果。如果你想一直保持定时执行,又不想电脑常开,可以部署到 VPS 或 AWS Lambda——但这会增加基础设施复杂度。

记得加上日志和错误通知,这样才能及时发现失败的任务。没有什么比两周后才发现爬虫早就悄悄坏掉了更糟糕的事了。

Thunderbit 方式:用自然语言设置定时爬虫

Thunderbit 的 Scheduled Scraper 允许你用自然语言描述间隔——输入“每周一上午 9 点”或者“每天早上 8 点”,AI 就会自动识别计划。抓取任务会运行在 Thunderbit 的云端服务器上(不需要浏览器或电脑保持运行),数据还可以自动导出到 Google Sheets 或 Airtable。这样就能做出一个实时监控看板,而且完全不用管理服务器——非常适合希望持续获得洞察、但不想承担 DevOps 成本的运营团队。

抓取亚马逊时的法律与伦理注意事项

我不是律师,以下内容也不是法律建议。但在一篇抓取教程里完全不提法律环境,那就不太负责任了——论坛用户确实会提出 ToS 方面的担忧,而且这很合理。

亚马逊 robots.txt: 截至 2026 年,亚马逊的 robots.txt 中包含 80+ 条明确的 Disallow 路径,但 /gp/bestsellers/ 并没有被标准用户代理明确禁止。不过,35+ 个 AI 相关的 user-agent(如 ClaudeBot、GPTBot、Scrapy 等)会被统一标记为 Disallow: /。没有明确禁止,并不意味着亚马逊认可抓取行为。

亚马逊服务条款: 亚马逊的 (2025 年 5 月更新)明确禁止在没有书面许可的情况下“使用任何自动化流程或技术访问、获取、复制或监控亚马逊网站的任何部分”。这不是理论问题——亚马逊在 2025 年 11 月因为未经授权的自动访问 ,并赢得了初步禁令。

hiQ v. LinkedIn 先例:(第九巡回法院,2022 年)中,法院认为抓取公开可访问的数据大概率不违反《计算机欺诈和滥用法案》(CFAA)。但 hiQ 最终还是达成和解,并同意停止抓取——即便在 CFAA 上赢了,也不能避免合同违约诉讼。

实用建议:

  • 只抓取公开可见的数据(价格、BSR、商品标题——不要抓 PII)
  • 尊重速率限制,不要给服务器造成压力
  • 把数据用于合法的竞品情报分析
  • 在大规模抓取前咨询你自己的法律顾问
  • 注意现在已经有 出台了全面隐私立法

Thunderbit 的云端抓取使用的是标准、类似浏览器的请求模式,但你仍然应该让自己的法律顾问核实合规性。

你应该选哪种方法?快速决策指南

简而言之:

  • “我在学 Python,想做一个周末项目。” → 方法 1(requests + BeautifulSoup)。你会学到很多关于 HTTP 请求、HTML 解析和亚马逊反爬防护的知识。
  • “我需要抓取 JavaScript 很重的页面,或者需要登录态。” → 方法 2(Selenium)。它更重,但能处理动态内容。
  • “我要做大规模生产抓取。” → 方法 3(抓取 API)。把代理和渲染交给别人管理。每月少于 500K 请求时, 更偏向 API。
  • “我不是开发者,但想在 2 分钟内拿到数据。” → 方法 4()。无需代码、无需选择器、无需维护。
  • “我需要持续监控,又不想管服务器。” → Thunderbit Scheduled Scraper。设好就不用管了。

结论与关键收获

经过一个周末的测试,真正留下印象的是这些:

requests + BeautifulSoup 很适合学习,但懒加载限制(50 个商品里只能拿到约 30 个)和脆弱的 CSS 选择器,让它不太适合生产环境。

Selenium 解决了懒加载问题,能够抓到每页全部 50 个商品,但它速度慢、内存占用高,而且仍然会被亚马逊的机器人防护识别。

抓取 API 在生产级抓取中提供了最好的稳定性——在 Amazon 上成功率约 ——但成本会逐步累积,而且你仍然需要写解析代码。

Thunderbit 在拿到数据的速度上遥遥领先。AI 能自动处理页面结构变化、懒加载、分页和反爬措施,而且不需要任何配置。对于非技术用户,或者需要周期性数据但又不想承担 DevOps 成本的团队来说,它是最实用的选择。

最大的教训是什么?亚马逊的反爬机制和频繁的页面改版意味着,长期来看,免维护方案最省时间。你花在调试失效选择器和轮换代理上的每一小时,都是没有用于真正分析的一小时。

想试试免代码方案? 提供了足够的 credits,让你抓几个 Best Sellers 类目,亲眼看看结果。如果你更偏向 Python 路线,上面的代码示例应该足够你起步。不管哪种方式,你最终都会把 Amazon Best Seller 数据放进表格里,而不是盯着浏览器标签页发呆。

如果你想了解更多网页抓取方案,可以看看我们关于 的指南。你也可以在 观看一步一步的演示。

了解更多

Fawad Khan
Fawad Khan
Fawad writes for a living, and honestly, he kind of loves it. He's spent years figuring out what makes a line of copy stick — and what makes readers scroll past. Ask him about marketing, and he'll talk for hours. Ask him about carbonara, and he'll talk longer.
目录

试试 Thunderbit

只需 2 次点击即可抓取线索和其他数据。AI 驱动。

获取 Thunderbit 免费使用
使用 AI 提取数据
轻松将数据传输到 Google Sheets、Airtable 或 Notion
Chrome Store Rating
PRODUCT HUNT#1 Product of the Week