如何抓取 Amazon 暢銷榜:4 種方法實測比較

最後更新於 August 21, 2026
如何抓取 Amazon 暢銷榜:4 種方法實測比較

上週末,我為了用四種不同方法抓取 Amazon 的 Best Sellers 頁面,整整喝掉一壺咖啡。有兩種方法表現不錯,有一種差點把我的 IP 弄到被封,還有一種真的只要按一下就搞定。以下是我學到的全部內容。

Amazon 這個市集龐大得驚人——6 億筆商品列表3.1 億以上活躍客戶帳號,再加上每小時更新一次的 Best Sellers Rank(BSR)系統。如果你在做 FBA 產品研究、競品定價分析,或只是想在對手前先看到趨勢,暢銷榜資料絕對是金礦。

但要把這些資料從 Amazon 抓出來,再匯入試算表?事情就開始有趣了。我實測了 requests + BeautifulSoup、Selenium、抓取 API,以及 Thunderbit(我們自己的無程式碼 AI 網頁爬蟲),看看哪一種真的能派上用場,又是哪一些會讓你盯著 CAPTCHA 頁面發呆。

什麼是 Amazon Best Sellers?為什麼你應該在意?

Amazon Best Sellers Rank(BSR)是 Amazon 的即時排行榜,依照各分類內的銷售量替商品排名。你可以把它想成每小時更新一次的人氣榜,依據近期與歷史銷售資料共同計算。Amazon 官方對它的說法如下:

「Amazon Best Sellers 的計算依據是 Amazon 銷售資料,並每小時更新,以反映 Amazon 上所有商品近期與歷史銷售表現。」— Amazon Seller Central

Best Sellers 頁面會顯示每個分類前 100 名商品,分成兩頁,每頁 50 筆。第 1 頁涵蓋第 1–50 名,第 2 頁涵蓋第 51–100 名。Amazon 也已確認,頁面瀏覽量與顧客評論不會影響 BSR——它完全是由銷售量驅動。

那誰會需要這些資料?做 FBA 選品的電商賣家、建立競爭情報的銷售團隊、追蹤定價趨勢的營運團隊,以及觀察分類成長的市場研究人員。以我的經驗來看,凡是在 Amazon 上賣東西、或是與 Amazon 競爭的人,最後都會需要這些資料放進試算表裡。

為什麼要用 Python 抓取 Amazon Best Sellers?

手動做產品研究非常耗時。根據一份 McKinsey 研究,員工每週有 9.3 小時都花在搜尋與蒐集資訊上。對電商團隊來說,這意味著一堆時間都耗在點 Amazon 頁面、複製商品名稱和價格、再貼到試算表裡,然後下週又重來一次。

以下這些情境,就是抓取 Best Sellers 很值得的原因:

使用情境你能取得什麼誰最受益
FBA 產品研究依 BSR 與評論數找出高需求、低競爭商品Amazon 賣家、Dropshipper
競爭性定價追蹤你所在分類熱門商品的價格變化電商團隊、定價分析師
市場趨勢監控發現正在上升的分類與季節性變化產品經理、市場研究人員
名單開發建立暢銷品牌與其產品線清單業務團隊、B2B 開發
競品分析將你的商品與分類龍頭做比較品牌經理、策略團隊

投資報酬率是真實存在的:Salesforce 對 2,700 位商務從業者的調查顯示,AI 工具平均每週可為電商從業者省下 6.4 小時。而使用自動化價格追蹤的賣家,Buy Box 取得率達到 67%,對比人工追蹤的 42%,光是反應速度更快,就帶來 37% 的銷售成長。

用 Python 抓取 Amazon Best Sellers 的 4 種方法:快速比較

在進入逐步教學前,先給你一個我希望自己一開始就有的對照表。這張表能幫你根據需求選對方法:

比較項目requests + BS4Selenium抓取 API(例如 Scrape.do)Thunderbit(無程式碼)
安裝難度中等高(driver、瀏覽器)低(API key)很低(Chrome 擴充功能)
支援延遲載入是(模擬滾動)是(渲染後 HTML)是(AI 處理渲染)
抗封鎖能力低(容易被封 IP)中等(可被偵測)高(輪換代理)高(雲端 + 瀏覽器模式)
維護成本高(選擇器容易失效)高(driver 更新 + 選擇器)很低(AI 可適應版面變化)
成本免費免費付費(按請求計費)免費方案 + 付費方案
最適合一次性抓取、學習用途JavaScript 較重、需登入頁面大規模 / 生產環境非工程師、快速研究、定期監控

如果你想學 Python 抓取的基本功,先從方法 1 或 2 開始。如果你要的是生產級穩定性,選方法 3。如果你想不寫程式、按一下就拿到結果,直接跳到方法 4。

開始前須知

  • 難度: 初學者到中階(依方法而定)
  • 所需時間: Thunderbit 約 15 分鐘,Python 方法約 45 分鐘
  • 你需要準備: Python 3.8+(方法 1–3)、Chrome 瀏覽器、Thunderbit Chrome 擴充功能(方法 4),以及目標 Amazon Best Sellers 分類網址

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

這是輕量、適合初學者的方法——不需要瀏覽器自動化,只靠 HTTP 請求與 HTML 解析。不過它也讓我最深刻體會到 Amazon 的反爬防線有多硬。

步驟 1:建立環境

先安裝需要的套件:

pip install requests beautifulsoup4 pandas

接著匯入模組:

import requests
from bs4 import BeautifulSoup
import pandas as pd
import random
import time

步驟 2:用逼真的 Header 發送請求

Amazon 會擋掉看起來像機器人的請求。最基本的防護方式,就是用模擬真實瀏覽器的 User-Agent。以下是一些目前較真實的 User-Agent 範例(來源:Geekflare,2026 年 3 月):

USER_AGENTS = [
    "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/147.0.0.0 Safari/537.36",
    "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",
    "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:149.0) Gecko/20100101 Firefox/149.0",
    "Mozilla/5.0 (Macintosh; Intel Mac OS X 15.7; rv:149.0) Gecko/20100101 Firefox/149.0",
    "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",
]

headers = {"User-Agent": random.choice(USER_AGENTS)}
url = "https://www.amazon.com/Best-Sellers-Electronics/zgbs/electronics/"
response = requests.get(url, headers=headers)
print(response.status_code)  # 理想情況下應該是 200

如果你看到 200 狀態碼,表示成功了。如果出現 503,或被轉到 CAPTCHA 頁面,代表 Amazon 已經把你的請求標記成可疑流量。

步驟 3:用 BeautifulSoup 解析商品資料

用瀏覽器的 DevTools 檢查 Amazon 頁面 HTML(右鍵 → Inspect)。商品容器使用的是 gridItemRoot 這個 ID。在每個容器內,你會找到商品名稱、價格、評分和網址。

soup = BeautifulSoup(response.text, "html.parser")
products = []

for item in soup.find_all("div", id="gridItemRoot"):
    title_tag = item.find("div", class_="_cDEzb_p13n-sc-css-line-clamp-3_g3dy1")
    price_tag = item.find("span", class_="_cDEzb_p13n-sc-price_3mJ9Z")
    link_tag = item.find("a", class_="a-link-normal")
    
    title = title_tag.get_text(strip=True) if title_tag else "N/A"
    price = price_tag.get_text(strip=True) if price_tag else "N/A"
    url = "https://www.amazon.com" + link_tag["href"] if link_tag else "N/A"
    
    products.append({"Title": title, "Price": price, "URL": url})

注意: _cDEzb_ 開頭的 class 名稱其實是 Amazon 會週期性重建的 CSS module hash。gridItemRoot 這個 ID 和 a-link-normal 這個 class 相對穩定,但在執行爬蟲前,最好還是先用 DevTools 再確認一次選擇器。

步驟 4:匯出成 CSV

df = pd.DataFrame(products)
df.to_csv("amazon_best_sellers.csv", index=False)
print(f"Scraped {len(products)} products")

預期結果,以及常見問題

在我的測試中,這個方法只抓到約 30 筆商品,而不是 50 筆。這不是程式錯誤,而是 Amazon 的延遲載入機制。初始載入時只有大約 30 筆商品會先渲染,其他商品要在捲動後才出現,而這需要 JavaScript 執行,requests 做不到。

其他限制還包括:

  • 沒有代理輪換時,IP 很快就會被封(我快速連打大約 15 次後就被擋了)
  • Amazon 更新頁面版型時,CSS 選擇器很容易失效,而且這種更新很頻繁
  • 沒有內建分頁處理

如果你是想學 Python 抓取,這方法很適合。若要用在正式環境,它就太脆弱了。

方法 2:用 Selenium 抓取 Amazon Best Sellers

Selenium 透過真實瀏覽器來解決延遲載入問題——安裝和設定比較重,但它可以抓到每頁完整 50 筆商品。

步驟 1:安裝 Selenium

pip install selenium pandas

好消息是:從 Selenium 4.6+ 開始,你不再需要 webdriver-manager。Selenium Manager 會自動處理 driver 下載。

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
import time
import pandas as pd

options = Options()
options.add_argument("--headless=new")
options.add_argument("--window-size=1920,1080")
options.add_argument("--disable-blink-features=AutomationControlled")

driver = webdriver.Chrome(options=options)

--headless=new 旗標(Chrome 109+ 才有)使用和一般有介面 Chrome 相同的渲染流程,因此更不容易被 Amazon 偵測。

步驟 2:捲動以載入延遲內容

這一步就是 Selenium 值回票價的地方。Amazon Best Sellers 一開始只會載入大約 30 筆商品,剩下的要捲動後才會出現。

def scroll_page(driver, scrolls=5, delay=2):
    for _ in range(scrolls):
        driver.find_element(By.TAG_NAME, "body").send_keys(Keys.PAGE_DOWN)
        time.sleep(delay)

driver.get("https://www.amazon.com/Best-Sellers-Electronics/zgbs/electronics/")
time.sleep(3)
scroll_page(driver)

捲動之後,50 筆商品都應該會出現在 DOM 裡。我測試時發現,5 次 Page Down、每次間隔 2 秒就夠了,但你可能要根據網路速度微調。

步驟 3:擷取商品資料

items = driver.find_elements(By.ID, "gridItemRoot")
products = []

for item in items:
    try:
        title = item.find_element(By.CSS_SELECTOR, "div._cDEzb_p13n-sc-css-line-clamp-3_g3dy1").text
    except:
        title = "N/A"
    try:
        price = item.find_element(By.CSS_SELECTOR, "span._cDEzb_p13n-sc-price_3mJ9Z").text
    except:
        price = "N/A"
    try:
        url = item.find_element(By.CSS_SELECTOR, "a.a-link-normal").get_attribute("href")
    except:
        url = "N/A"
    
    products.append({"Title": title, "Price": price, "URL": url})

每個欄位都用 try/except 包起來很重要——有些商品可能缺貨,或某些欄位不存在;你不會希望單一元素出錯就讓整個抓取流程當掉。

步驟 4:處理分頁

Amazon 會把 100 名暢銷商品分成兩頁,網址結構也不同:

urls = [
    "https://www.amazon.com/Best-Sellers-Electronics/zgbs/electronics/",
    "https://www.amazon.com/Best-Sellers-Electronics/zgbs/electronics/ref=zg_bs_pg_2_electronics?_encoding=UTF8&pg=2"
]

all_products = []
for url in urls:
    driver.get(url)
    time.sleep(3)
    scroll_page(driver)
    # ... 如上方方式擷取商品 ...
    all_products.extend(products)

driver.quit()

預期結果

在我的測試中,Selenium 每頁都能抓到完整 50 筆商品——明顯比 requests + BS4 更好。缺點是:每頁大約要 45 秒(包含捲動等待時間),而且如果沒有代理輪換,跑太多次還是會被標記。即使加了反偵測參數,Selenium 仍然會被 Amazon 的 bot 偵測系統辨識;若要真正大規模使用,還得加更多保護措施(可參考下面的 Anti-Ban Playbook)。

其他痛點包括:

  • WebDriver 版本不一致的問題偶爾還是會出現,不過 Selenium Manager 已經讓這種情況少很多
  • Amazon 只要改 DOM,CSS 選擇器就得跟著更新
  • 記憶體占用高——每個瀏覽器實例大約吃掉 200–400MB RAM

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

抓取 API 就是「把麻煩事交給別人」的做法。像 Scrape.do、Oxylabs 和 ScrapingBee 這類服務,會幫你處理代理輪換、JavaScript 渲染與反機器人措施——你只要送出 URL,就能拿回 HTML 或 JSON。

這是怎麼運作的?

你把目標網址送到 API 端點。API 會在他們的基礎設施上用真實瀏覽器渲染頁面、輪換代理、處理 CAPTCHA,然後回傳乾淨的 HTML。之後你再像平常一樣用 BeautifulSoup 解析回傳內容即可。

步驟 1:透過 API 發送請求

以下以 Scrape.do 為例(起價為每月 29 美元,可用 150,000 credits,1 credit = 1 次請求,不論是否渲染):

import requests
from bs4 import BeautifulSoup

api_token = "YOUR_API_TOKEN"
target_url = "https://www.amazon.com/Best-Sellers-Electronics/zgbs/electronics/"

api_url = f"https://api.scrape.do?token={api_token}&url={target_url}&render=true&geoCode=us"
response = requests.get(api_url)
soup = 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 上的成功率約 99%)、不需要維護 driver、會自動處理反機器人機制、擴展性好。

缺點: 按請求計費(規模一大成本會快速累積)、還是得自己寫解析程式、CSS 選擇器變動時一樣會受影響。若每月抓 100,000 頁,三年的總成本差異非常大:自建系統大約要 198 萬美元,而使用 API 供應商約 33.2 萬美元——節省 71%。

通常在每月 50 萬到 100 萬次請求之間會是損益平衡點。低於這個量,API 省下的時間通常遠超過成本。

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

先說明一下:我在 Thunderbit 工作,所以你可以把這段內容放在這個背景下看。不過我確實把四種方法都連著實測了一輪,資料到手速度的差異真的非常明顯。

Thunderbit 是一款以 Chrome 擴充功能形式運作的 AI 網頁爬蟲。核心概念是:不用自己寫 CSS 選擇器或 Python 程式,AI 會直接讀頁面並判斷要擷取哪些資料。針對 Amazon Best Sellers,Thunderbit 還有現成模板,按一下就能用。

步驟 1:安裝 Thunderbit Chrome 擴充功能

前往 Chrome 線上應用程式商店,點擊「加到 Chrome」。註冊一個免費帳號——免費方案提供的 credits 已經足夠你先測試。

步驟 2:打開 Amazon Best Sellers 頁面

在 Chrome 中打開任一 Amazon Best Sellers 分類頁,例如: https://www.amazon.com/Best-Sellers-Electronics/zgbs/electronics/

步驟 3:點擊「One Click Extract」

打開 Thunderbit 側邊欄,點擊「One Click Extract」。AI 會分析頁面結構,並找出欄位:商品名稱、價格、評分、圖片網址、賣家、商品網址與排名。在我的測試中,它大約 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 選擇器。這直接解決了抓取論壇中最常見的抱怨之一:「一般網頁爬蟲不夠用,你得為元素變動加一堆例外處理。」當 Amazon 改 DOM 時(這很常發生),你完全不用改任何東西。

雲端抓取模式會透明處理代理輪換、渲染與反機器人措施。對想要「裝好就能用」的使用者來說,這等於把整個防封鎖的煩惱一次消掉。

跳過選擇器維護的麻煩 Amazon 一改標記,BeautifulSoup 的選擇器就會失效。Thunderbit 的 AI 會在每次執行時重新讀頁,重新判斷欄位。 Get Started Free

防封鎖作戰手冊:如何避免被 Amazon 擋下

Amazon 的 bot 偵測非常嚴格。我在測試期間就曾經讓自己的 IP 暫時被封,論壇使用者也有類似回報:「到處都報錯,Amazon 甚至開始把我導回首頁。」如果你打算走 Python 路線(方法 1–3),這一段很重要。

以下是分層策略,從基礎到進階依序排列:

1. 輪換 User-Agent 字串

一直送出同一個 User-Agent 是明顯紅旗。使用方法 1 範例中的 5+ 組字串,並在每次請求時隨機挑一個:

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

2. 在請求之間加入隨機延遲

固定延遲很容易被辨識出規律。隨機延遲更安全:

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

我發現請求之間隔 2–5 秒,在小批次(少於 50 次請求)時還算安全。若要跑更大批量,建議拉到 3–7 秒。

3. 使用代理輪換

這是最關鍵的一步。Proxyway 的測試顯示,住宅代理在 Amazon 上平均成功率約 94%,而資料中心代理只有約 59%——差了 35 個百分點。Amazon 的偵測堆疊包含 TLS 指紋辨識、行為分析與 IP 速率限制,所以一般資料中心 IP 很快就會被標記。

住宅代理比較貴(依供應商不同,每 GB 約 2–12 美元),但穩定度高很多。程式範例如下:

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

4. 強化 Selenium 的瀏覽器指紋

options.add_argument('--disable-blink-features=AutomationControlled')
options.add_experimental_option("excludeSwitches", ["enable-automation"])
options.add_experimental_option('useAutomationExtension', False)

# driver 初始化後,移除 navigator.webdriver 標記
driver.execute_cdp_cmd('Page.addScriptToEvaluateOnNewDocument', {
    'source': "Object.defineProperty(navigator, 'webdriver', {get: () => undefined})"
})

5. 管理 Session 與 Cookies

保留跨請求的 cookies,會讓爬蟲看起來更像真實使用者:

session = requests.Session()
# 先造訪首頁,取得較自然的 cookies
session.get("https://www.amazon.com", headers=headers)
time.sleep(2)
# 再抓目標頁面
response = session.get(target_url, headers=headers)

6. 什麼時候該直接跳過這些麻煩

如果你不想管理這些細節,Thunderbit 的雲端抓取會透明處理代理輪換、渲染與反機器人措施。抓取 API 也會自動處理大部分問題。以我的經驗來說,花在除錯防封鎖問題上的時間,往往比寫真正的爬蟲還多——所以「裝好就能用」的方案確實有投資報酬率。

子頁面加值:抓取商品詳情頁以取得更豐富資料

Best Sellers 列表頁只會顯示基本資訊——標題、價格、評分、排名。但如果你要做 FBA 研究,真正有價值的資訊其實都在單一商品詳情頁。以下是你只抓列表頁時會缺少的內容:

欄位列表頁商品詳情頁
商品名稱
價格
評分
BSR 排名✅(含子分類排名)
品牌
ASIN
首次上架日期
尺寸 / 重量
賣家數量
重點特色
Buy Box 持有者

其中「首次上架日期」特別有價值——它能告訴你商品已在市場上多久,這是做競爭分析的重要訊號。了解賣家數量與 Buy Box 持有者,也有助於判斷某個利基市場是否值得切入(如果 Amazon 自己占了超過 30% 的 Buy Box 份額,競爭難度通常非常高)。

Python 作法:逐一迴圈抓取商品網址

把列表頁蒐集到的商品網址拿來,搭配延遲逐一抓取:

for product in products:
    time.sleep(random.uniform(3, 6))
    detail_response = session.get(product["URL"], headers={"User-Agent": random.choice(USER_AGENTS)})
    detail_soup = BeautifulSoup(detail_response.text, "html.parser")
    
    # 擷取品牌
    brand_tag = detail_soup.find("a", id="bylineInfo")
    product["Brand"] = brand_tag.get_text(strip=True) if brand_tag else "N/A"
    
    # 從頁面原始碼或 URL 擷取 ASIN
    # 從商品資訊表格擷取首次上架日期
    # ... 其他欄位 ...

提醒一下:連續打 100 個商品詳情頁,會大幅提高被封的風險。請務必預留代理輪換與更長延遲的空間。

Thunderbit 作法:一鍵抓取子頁面

當你把列表頁抓成表格後,在 Thunderbit 裡點選「Scrape Subpages」。AI 會自動拜訪每個商品網址,並幫表格補上額外欄位——品牌、ASIN、規格、功能等。完全不需要額外程式、選擇器或設定。對電商團隊來說,這特別適合需要完整資訊來做採購判斷,但又不想自己寫和維護詳情頁解析器的情境。

自動化重複抓取:持續追蹤 Best Sellers 變化

一次性抓取很有用,但真正的競爭優勢往往來自持續監控。追蹤商品排名升降、提早發現趨勢、觀察數週或數月的價格變化——這些才是把研究變成數據驅動決策的關鍵。

Python 作法:用 Cron 排程

在 Linux/Mac 上,你可以用 cron 來排程 Python 腳本。以下是每天早上 8 點抓取的 crontab 範例:

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

每週一早上 9 點執行一次則是:

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

在 Windows 上,可以用 Task Scheduler 達成相同效果。如果你想要長期自動執行,但不想讓筆電一直開著,可以部署到 VPS 或 AWS Lambda——只是這會增加基礎設施的複雜度。

記得加入 log 與錯誤通知,避免失敗卻沒人發現。最糟的情況,就是兩週後才發現爬蟲早就默默壞掉了。

Thunderbit 作法:用自然語言設定排程爬蟲

Thunderbit 的 Scheduled Scraper 可以讓你直接用自然語言描述間隔——輸入「每週一早上 9 點」或「每天早上 8 點」,AI 就會理解排程。抓取任務會在 Thunderbit 的雲端伺服器上執行(不需要你的瀏覽器或電腦保持開啟),而資料也能自動匯出到 Google Sheets 或 Airtable。這樣就能建立即時監控儀表板,完全不用管理伺服器——非常適合想要持續掌握狀況、但不想背負 DevOps 成本的營運團隊。

抓取 Amazon 時的法律與道德考量

我不是律師,這也不是法律建議。不過,如果在抓取教學裡完全不提法律面,那就太不負責任了——論壇使用者也確實會明確提出 ToS 相關疑慮,而且這很合理。

Amazon 的 robots.txt: 截至 2026 年,Amazon 的 robots.txt 裡有 80+ 個特定 Disallow 路徑,但 /gp/bestsellers/ 並沒有明確對一般使用者代理封鎖。不過,35+ 個 AI 專用 user agent(如 ClaudeBot、GPTBot、Scrapy 等)則會被直接套用 Disallow: /。沒有明確禁止,不代表 Amazon 就鼓勵抓取。

Amazon 的服務條款: Amazon 的 Conditions of Use(2025 年 5 月更新)明確禁止在未經書面許可下,「使用任何自動化程序或技術來存取、取得、複製或監控 Amazon 網站的任何部分」。這不是理論問題——Amazon 在 2025 年 11 月就因未經授權的自動化存取對 Perplexity AI 提起訴訟,並拿到初步禁制令。

hiQ v. LinkedIn 的先例:hiQ Labs v. LinkedIn(第九巡迴法院,2022 年)中,法院認定抓取公開可取得的資料,可能不違反《Computer Fraud and Abuse Act》。但 hiQ 最終還是和解,並同意停止抓取——就算在 CFAA 上勝訴,也不代表能避開違反合約的主張。

實務建議:

  • 只抓公開資料(價格、BSR、商品標題——不要碰個資)
  • 尊重速率限制,不要對伺服器造成過大負擔
  • 資料用途應限於正當的競爭情報分析
  • 大規模抓取前,先諮詢你自己的法律顧問
  • 注意現在已有 20+ 個美國州 制定了完整的隱私法規

Thunderbit 的雲端抓取使用的是標準、類瀏覽器的請求模式,但你仍應與自己的法律顧問確認是否合規。

這個案例不需要 Python 如果你的目標是試算表,而不是資料管線,只要按一下就能完成。可直接匯出到 Excel、Google Sheets、Airtable 或 Notion。 Get Started Free

你該選哪一種方法?快速決策指南

簡單版結論:

  • 「我正在學 Python,想做一個週末專案。」 → 方法 1(requests + BeautifulSoup)。你會學到很多關於 HTTP 請求、HTML 解析,以及 Amazon 反機器人防線的知識。
  • 「我需要抓 JavaScript 很重的頁面,或登入後的 session。」 → 方法 2(Selenium)。雖然比較重,但能處理動態內容。
  • 「我正在大規模跑正式抓取任務。」 → 方法 3(抓取 API)。讓別人替你管理代理與渲染。當每月少於 50 萬次請求時,總持有成本通常更偏向 API。
  • 「我不是工程師,我想在 2 分鐘內拿到資料。」 → 方法 4(Thunderbit)。不用寫程式、不用選擇器、也不用維護。
  • 「我需要持續監控,但不想管理伺服器。」 → Thunderbit Scheduled Scraper。設定一次,就能長期運作。

試試 Thunderbit 抓 Amazon Best Sellers Get Started Free

結論與重點整理

經過一整個週末的測試,最後真正留下來的結論是:

requests + BeautifulSoup 很適合學習,但延遲載入限制(只抓到 50 筆中的約 30 筆)以及脆弱的 CSS 選擇器,讓它不太適合正式使用。

Selenium 解決了延遲載入問題,也能抓到每頁完整 50 筆商品,但速度慢、吃記憶體,而且仍然可能被 Amazon 的 bot 防護偵測到。

抓取 API 在生產規模上提供了最好的穩定性——Amazon 上成功率可達 約 99%——但成本會累積,而且你還是得自己寫解析程式。

Thunderbit 在資料取得速度上大幅領先。AI 會處理版面變化、延遲載入、分頁與反機器人措施,而且不需要任何設定。對非技術使用者,或是需要持續資料但不想負擔 DevOps 的團隊來說,它是最實際的選擇。

最重要的教訓是:Amazon 的反機器人防護和頻繁版面變動,意味著「免維護」方案在長期最省時間。你每花一小時除錯壞掉的選擇器、調整代理,就是少一小時能拿來真正分析資料。

想試試無程式碼做法嗎?Thunderbit 免費方案 提供足夠的 credits,讓你抓幾個 Best Sellers 分類,親自看看效果。偏好 Python 路線?上面的程式碼範例應該足夠讓你開始。不管選哪一種,你最後都會在試算表裡看到 Amazon Best Seller 資料,而不是一直盯著瀏覽器分頁發呆。

如果你想了解更多網頁抓取方式,可以參考我們的教學:抓取 Amazon 商品與評論將網站資料擷取到 Excel、以及最佳 AI 網頁爬蟲。你也可以到 Thunderbit YouTube 頻道 觀看逐步示範。

延伸閱讀

Fawad Khan
Fawad Khan
Fawad 靠寫作維生,而且老實說,他其實還滿喜歡這件事。他花了好幾年摸索,究竟什麼樣的文案能讓人記住,又是什麼讓讀者直接滑過。你要是問他行銷,他可以聊上好幾個小時;你要是問他 carbonara,他只會聊得更久。
Topics
Web Scraping ToolsAI Web Scraper
目錄
Thunderbit · AI 網頁資料代理

1 次點擊 內擷取任何頁面的資料

深受 250,000+ 用戶信賴
提供免費方案
從網頁到試算表
描述你需要的內容——Thunderbit 的 AI 代理會幫你爬取,並匯出到 Excel、Google Sheets、Airtable 或 Notion。免費即可開始。
Chrome Store Rating
PRODUCT HUNT#1 Product of the Week