上週末,我為了用四種不同方法抓取 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 + BS4 | Selenium | 抓取 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.80 | JavaScript 渲染需乘以 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 秒就正確辨識出所有相關欄位。

你可以重新命名、刪除或新增欄位。你甚至可以替每個欄位加入自訂 AI 提示詞——例如輸入「分類為 Electronics/Apparel/Home」,就能幫每個商品加上分類標籤。
步驟 4:點擊「Scrape」
按下「Scrape」按鈕。Thunderbit 會把頁面上的商品資料整理成結構化表格。在雲端模式下,它最多可同時平行處理 50 頁,自動處理延遲載入與分頁。
步驟 5:免費匯出
點擊「Export」,選擇輸出目的地:Excel、Google Sheets、Airtable 或 Notion。所有方案都可免費匯出,沒有隱藏費用。

從打開頁面到拿到完整試算表,我整個流程大約花了 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 頻道 觀看逐步示範。
延伸閱讀


