爬蟲入門 Web Scraping 101
為完全不懂爬蟲的人寫 · 從原理到市場定位 · 含 3D 互動
FROM ZERO · 互動知識頁

網路上的資料,
怎麼被「」進程式裡?

你聽到有人說 Firecrawl 出了一個很強、又免費的爬蟲工具。要判斷它強不強、該不該用、會不會踩雷,得先看懂「爬蟲」這整個世界。 這頁從零講起:爬蟲在做什麼、為什麼是個難題、市面工具怎麼分檔、免費跟付費差在哪,中間還有一個可以動手玩的 3D 控制台,讓你親眼看見「為什麼有些工具要收錢」。

一個網頁(本來是給人看的)
  → 程式把整頁抓下來(拿到 HTML 原始碼)
    → 從一堆標籤裡抽出你要的東西(標題 / 價格 / 內文…)
      → 存成乾淨格式(表格 / JSON / Markdown)
        → 餵給分析、資料庫,或現在最夯的 → 餵給 AI
PART · 01

爬蟲到底在做什麼?

「爬蟲」(web scraping / crawling)就是用程式自動化地讀網頁、把要的資料抽出來。 你用滑鼠開瀏覽器、用眼睛讀、手動複製貼上——爬蟲就是把這整套換成程式,一次處理幾百幾千頁,輸出成電腦能直接用的格式。

人怎麼讀網頁

  • 打開瀏覽器 → 輸入網址
  • 用眼睛找到要的內容
  • 手動複製、貼到 Excel
  • 一次一頁,量大就崩潰

爬蟲怎麼讀

  • 程式發出請求 → 拿回整頁 HTML
  • 用規則(selector)定位要的欄位
  • 自動寫進 JSON / 表格 / 資料庫
  • 一次幾千頁,可排程重複跑

三個常被搞混的動作

動作英文在做什麼比喻
抓單頁Scrape給定一頁,把那一頁的內容抓下來、洗乾淨影印「這一頁」
爬整站Crawl從一頁出發,自動發現並走遍很多頁(見 Part 06)翻完整本書再印
搜尋Search對一個搜尋索引/端點下查詢,拿回結果清單(底層可能用到 crawl,但對使用者是不同操作)查目錄決定要看哪幾頁

記憶點:爬蟲的本質是「把給人看的網頁,翻譯成給機器用的資料」。難的從來不是「抓」,是接下來幾節要拆解的牆。

PART · 02

關鍵心智模型:你看到的網頁 ≠ 原始碼

這節是整頁最重要的觀念。「網頁原始碼」和「你在瀏覽器看到的畫面」常常不是同一個東西。看懂這件事,後面的 headless 瀏覽器、JavaScript、Firecrawl 全都會一秒理解。

① 原始 HTML

伺服器第一手送來的純文字(瀏覽器「檢視原始碼」看到的)。最便宜抓,但可能是個空殼

② DOM

瀏覽器把 HTML 解析成的一棵「節點樹」。程式就是沿著這棵樹去定位「第 3 個表格的第 2 欄」。

③ 渲染後畫面

JavaScript 跑完、資料載入後,你眼睛實際看到的樣子。常常比原始 HTML 多很多內容。

!
陷阱:很多現代網站(無限捲動、即時載入)的原始 HTML 幾乎是空的,內容是 ② → ③ 這段由 JavaScript「長出來」的。 所以只抓「原始 HTML」會抓到空殼——你必須開一個真的會跑 JS 的瀏覽器(headless browser)把頁面渲染出來,才抓得到。這就是下一節「第一道牆」的根源,也是 Firecrawl 這類工具的核心價值之一。
PART · 03

一個真實例子:從網頁到表格

抽象講完,看一個具體的。假設你要把某個「課程列表」頁面變成一張可用的表格。整個流程其實就五步:

給網址

指定要抓的那一頁 URL

取得 DOM

抓回 HTML、(必要時)跑 JS 渲染成節點樹

定位 selector

「每個 .course 卡片裡的標題、講師、價格」

抽成資料列

每張卡 → 一列 {標題, 講師, 價格}

洗乾淨輸出

去空白、轉數字 → CSV / Markdown

同一頁,兩種輸出

原始 HTML(一坨)

<div class="course">
  <h3>心電圖判讀</h3>
  <span class="i">王醫師</span>
  <b>NT$1,200</b>
</div> ...(再重複 50 次)

抽取 + 洗淨後

標題          講師    價格
心電圖判讀     王醫師   1200
影像判讀入門   李醫師   980
... → 存成 CSV / Markdown
直接餵 Excel 或 AI

「selector」就是你給程式的定位規則。網站一改版,selector 失效,這條 pipeline 就斷了——記住這點,它是 Part 04 第四道牆的伏筆。

PART · 04

為什麼爬蟲很難?五道難關

如果每個網站都乖乖把資料攤在 HTML 裡、又歡迎你抓,那爬蟲就是十行程式的事。現實反過來——下面這五道牆,就是付費工具存在的理由。你付的錢,幾乎都在買「幫你翻過這些牆」。下一節你可以親手開關它們。

牆 1 · 動態頁面(JavaScript)

內容靠 JS 跑出來(見 Part 02)。只抓原始 HTML 會抓到空殼 → 必須開隱形瀏覽器渲染。慢、吃資源。

牆 2 · 反爬偵測 / 封 IP

網站偵測到「機器人流量」就封你 IP、丟 CAPTCHA、用 Cloudflare 擋。對策是輪流換代理 IP——乾淨住宅 IP 池本身就很貴。

牆 3 · 登入牆 / 付費牆

要登入才看得到的內容,爬蟲得帶你的登入狀態(cookie / session)才進得去。多數託管工具不幫你過登入

牆 4 · 網站改版 → 程式壞掉

selector 一改版就失效。維護是隱形長期成本——託管服務的賣點之一就是「它幫你跟著修」。

§
牆 5 · 法律與授權(最容易被忽略,且性質不同)。 前四道是「技術上抓不抓得到」;這一道是「就算抓得到,你被不被允許這樣用」——這是兩件事。 網站 ToS、robots.txt、著作權、個資法都可能限制你。工具再強都不幫你扛這個責任。抓公開資料通常還好;登入後內容、個資、有版權內容拿去商用,風險在你身上。
PART · 05 ⊹ 互動

動手玩:五道牆控制台(3D)

這就是上一節五道牆的可操作版。請求封包從左邊(URL)流向右邊(乾淨資料),每道牆預設是關的(紅色),封包會卡住。 打開對應的能力(開關),牆變綠、封包就能通過。右邊帳本即時算出你的成功率、吞吐、成本、維護負擔、法律風險——你會親眼看到:每開一道牆都要付代價,而真實工具就是把這些代價打包成不同方案。

REQUEST PIPELINE · 看封包流向
URL 起點JS反爬登入改版法律乾淨資料
URL → 五道牆 → 乾淨資料 JS反爬登入改版法律 (你的瀏覽器未啟用 WebGL,顯示靜態版;互動控制仍可用。)

預設方案 · 點一下套用

自己調下面的開關,或點一個方案看它怎麼配。

能力開關(=五道牆)

渲染 JS翻過牆 1:動態頁面
輪替代理 IP翻過牆 2:反爬 / 封 IP
帶登入 cookie翻過牆 3:登入牆
Schema 驗證翻過牆 4:改版自動偵錯
確認合法授權牆 5:你被允許這樣用
成功率
吞吐 / 分鐘
成本 / 千頁
維護負擔
法律風險
圖 · 五道牆控制台。封包=抓取請求;牆=難關;開關=你投入的基礎建設。重點不是「全開」,是看見每道牆的成本長在不同地方(錢/維護/法律),而「裸跑」「Keyless」「工業級」三個 preset 就是真實世界把這些取捨打包的三種方式。
PART · 06

「爬整站」其實在做什麼?

前面多在講抓「一頁」(scrape)。但 crawler 的精髓是自己發現並走遍很多頁。它的邏輯像在迷宮裡有系統地探路:

起始 URL
  → 抓這頁,順便找出頁面上所有連結
    → 把新連結丟進「待辦佇列」(queue)
      → 每抓一頁就記進「已造訪集合」(visited set)→ 避免重複抓
        → 限制「深度」(depth):只往下幾層,免得整個網路都爬
          → 佇列空了,或到達上限 → 結束

為什麼需要「去重」

網站到處互相連結(首頁出現在每一頁)。沒有 visited set,爬蟲會一直重複抓同幾頁、無限繞圈。

為什麼需要「深度限制」

連結會無限展開。沒有 depth / 數量上限,一個 crawl 可能永遠跑不完、或把對方伺服器打爆(也不禮貌)。

這也是 rate limit(速率限制)該登場的地方:好的 crawler 會放慢、分散請求,當個有禮貌的訪客——既是道德,也是避免被牆 2 封掉的實務。
PART · 07

工具光譜:從「自己寫」到「全託管」

所有爬蟲工具可以排成一條光譜。左邊=自己寫程式,最自由、最省錢,但每道牆自己扛;右邊=全託管服務,最省事、規模最大,但要付錢。沒有哪一檔「最好」,只有「對不對你的場景」。

← 最自由・最費工・最便宜最省事・最貴 →
TIER 1
DIY 程式庫
Scrapy · Playwright
BeautifulSoup
自己寫 Python。最大彈性,五道牆全自己扛。免費
TIER 2
開源 AI 框架
Crawl4AI
Firecrawl 自架
開源、自己跑伺服器,直接吐 AI 能吃的格式。免軟體費
TIER 3
託管 AI API
Firecrawl 雲端
Jina Reader
給網址 → 回乾淨 Markdown,零維護。有免費額度。freemium
TIER 4
重型商用 API
Bright Data · Zyte
ScrapingBee · Apify
買 proxy + 反爬 + 工業級規模。強反爬站的解法。
TIER 5
無程式視覺工具
Octoparse
ParseHub
點選式介面,給不寫 code 的人。複雜站受限。freemium
圖 · 越往右,你用錢換掉越多麻煩;越往左,你用時間與技術換掉越多花費。Firecrawl 同時站在 Tier 2(開源自架)和 Tier 3(託管 API)。
PART · 08

免費 vs 付費,到底差在哪?

付費服務賣的不是「抓網頁」這個動作(免費工具也會),而是幫你解決那五道牆。具體說,你的錢買的是這六樣(對照剛剛的控制台):

你買的東西免費 / 自架 怎麼辦付費 / 託管 給你什麼
代理 IP 池自己租或裸奔,容易被封內建百萬住宅 IP 自動輪替(最大成本來源)
反爬 / CAPTCHA自己研究怎麼偽裝、自己解「隱身模式」一鍵過 Cloudflare(通常加價計費)
JS 渲染自己架 headless 瀏覽器、自付伺服器雲端幫你跑,你只管收結果
併發 / 規模受你機器與頻寬限制幾百併發、工業級吞吐
維護網站改版你自己修服務方持續維護、跟著修
可靠度 / 客服沒人理你成功率保證、SLA、技術支援

一句話:免費的不是「沒成本」,是把成本從錢轉成你的時間 + 你的風險

PART · 09

真實價格參考

價格與額度經常變動,務必以各官網為準;這裡只給你「量級感」。下面已標註計價單位與查核日,避免被單一數字誤導。

工具定位入門價免費額度備註(計價單位)
Crawl4AI開源框架免軟體費開源,無授權費仍要付伺服器 / proxy / 維護 / 你的時間,非真正 $0
Jina Reader託管 AI API$0 起免費額度寬鬆網址前加 r.jina.ai 即用
Firecrawl Keyless託管 AI API$01,000 credits/月・免註冊超量自帶 key 轉訂閱
Firecrawl Hobby託管 AI API$16/月(付費起跳)年繳價・約 5,000 頁/月
Zyte API商用$0.13/千次試用額度簡單 HTTP 請求・PAYG
Apify商用平台$29/月$5 試用 creditcompute-unit 計價
ScrapingBee商用$49/月1,000 次試用訂閱制
Bright Data商用・工業級~$1.5/千次試用 credit此價為 Web Unlocker PAYG;其他產品另計,另有 $499/月方案
圖 · 入門價量級對照(查核日 2026-06-19,以官網為準)。Crawl4AI「免費」指無軟體授權費,規模化後仍有 proxy/伺服器/維護成本;Firecrawl Hobby 為年繳價;Bright Data $1.5/千次 僅指 Web Unlocker 的 PAYG,並非所有產品。
PART · 10

LLM 時代的新物種:為什麼 Firecrawl 現在紅

傳統爬蟲抓回來是一坨 HTML,你得自己寫規則挑欄位、洗乾淨。但這兩年抓網頁多半是為了餵給 AI(問答、RAG 知識庫、agent)。於是冒出新工具:直接吐出 AI 能吃的乾淨 Markdown,省掉中間清洗。

傳統路線

抓回 HTML(一坨標籤)
   ↓ 你寫 selector
逐欄位挑出來
   ↓ 自己洗雜訊
結構化 JSON
   ↓
還要再轉成 AI 能讀的格式

LLM-ready 路線

給一個網址
   ↓ 一次呼叫
回乾淨的 Markdown
(廣告/選單/雜訊已去掉)
   ↓
直接餵給 AI,零清洗

這個新類別的三個代表

工具性質強項限制
Firecrawl託管 API(也可自架)freemium能爬整站、和 LangChain / RAG 生態整合最好、功能最全規模大要訂閱、強反爬站加價
Jina Reader託管 API freemium最簡單:網址前加 r.jina.ai/ 就有結果,免 SDK只處理單頁,不自己爬整站
Crawl4AI開源函式庫 免費完全開源(Apache 2.0)、可本地跑、完全掌控要自己寫 code、自己維運
Firecrawl 是這類別裡名氣最大的——GitHub 13 萬顆星、SDK 每週下載 250 萬次。所以它一推免費新功能,X 上就洗版。它是真貨,不是來路不明的小工具。
PART · 11 ⊹ 互動

互動定位地圖:你該從哪個工具起步?

把市場放進一張二維圖:橫軸=你願意花多少設定功夫(左:肯寫 code/右:要零設定),縱軸=你的規模與反爬需求(下:小量試用/上:工業級)。拉動下面兩條 slider,地圖上的「你」會移動,下方給出建議起點(不是排名,是「從這裡開始,撞牆了再升級」)。

設定功夫:左=肯寫 code/自架 · 右=零設定即用 規模 & 反爬:下=小量試用 · 上=工業級 DIY 程式庫 Crawl4AI Bright Data / Zyte Apify Firecrawl 付費 Jina Reader ★ Firecrawl Keyless

調整你的條件

建議起點:Firecrawl Keyless — 零設定試用,小量首選。
PART · 12

抓到了 ≠ 抓對了:資料可信嗎?

新手最常犯的錯,是只問「程式有沒有跑完」,不問「抓回來的資料對不對」。爬蟲最危險的不是當掉,是安靜地抓錯——它不報錯,但資料是壞的。常見的隱性失敗:

少抓了(漏行)

分頁沒翻完、動態內容沒載入 → 你以為抓了全部,其實只有第一頁。

重複了(重行)

沒去重,同一筆被抓很多次 → 統計全錯。

抓到舊的(過期)

抓到的是快取/舊版頁面,不是現況。

selector 抓錯欄

網站微調,價格欄變成了日期欄,數字照樣填進去——看起來很正常。

!
最經典的坑:沒登入時,網站把你導去「請先登入」頁,爬蟲把那個登入頁當成內容抓下來,整批資料其實是同一張登入頁。所以——永遠抽樣人工檢查幾筆,別只看「跑完了」。
PART · 13

給你的實務地圖

你已經有一套 headless Chrome + CDP 的自動抓取流程(免費、全掌控、能帶登入狀態、不經過第三方)。所以問題不是「要不要換成 Firecrawl」,而是「哪些場景值得多用一個工具」。

你的場景建議為什麼
臨時抓一兩頁,要乾淨 Markdown 餵 AIFirecrawl Keyless / Jina Reader零設定、30 秒搞定,免費額度綽綽有餘
抓需要登入的站(如 FB)你的 CDP 流程託管工具過不了你的登入態;你已有更好的解
大量公開頁面 bulk(podcast、NCCN 等)CDP / Crawl4AI 自架Keyless 1,000 頁 + 併發 2 撐不住這量級
要做 RAG 知識庫LLM-ready 工具皆可輸出就是乾淨 Markdown,省掉清洗
工業級 + 強反爬電商站付費(Bright Data / Zyte)proxy + 反爬是它們的核心競爭力
掛進 Claude 當隨手工具Firecrawl Keyless(MCP)免 key,掛上去就能用,最低摩擦

先別急著爬:四個「該不該爬」的問題

先問這四題,多半不用爬

  • 對方有官方 API 嗎?→ 用 API,穩定又合法
  • 現成資料集可下載嗎?(CSV / dump)
  • 需要取得授權嗎?問一聲常常就給
  • 其實手動複製十筆就夠了嗎?

三條紅線(你問的「要小心」)

  • 合法性是你的責任:ToS / robots.txt / 著作權,工具不扛
  • 資料會過第三方雲:Keyless 抓的內容經 Firecrawl 伺服器,絕不抓病人資料 / 帳密 / PHI
  • 免費 ≠ 無限:1,000 頁/月、併發 2,是試用級

如果只記一件事

Firecrawl Keyless 是真貨、可放心試、適合隨手小量任務,但別把它當你 bulk pipeline 的取代品——那塊你的 CDP 流程仍然更強,也不用把資料交給第三方。最省事的驗證法:拿一個公開網頁丟它,看吐出來的 Markdown 品質,30 秒見真章。

PART · 14

詞彙表(看到不慌)

HTML
網頁的原始碼,由一堆「標籤」組成。瀏覽器把它畫成你看到的畫面;爬蟲拿到的是這份原始碼。
DOM
瀏覽器把 HTML 解析成的「節點樹」。程式沿著它定位「第幾個元素」。
靜態 vs 動態頁面
靜態=內容直接寫在 HTML。動態=要瀏覽器跑 JavaScript 才長出內容(無限捲動、即時載入)。
Headless browser
沒有畫面的瀏覽器,由程式操控。用來把動態頁面真的「跑出來」再抓。Playwright / Puppeteer 是代表。
Selector
定位規則,告訴程式「要抓哪個元素」。網站改版時最容易失效的就是它。
Proxy / IP 輪替
代理伺服器。用不同 IP 發請求,讓網站不覺得是同一台機器在狂抓,避免被封。付費服務最大的成本來源。
Rate limit
網站限制「同一來源每秒/每分能請求幾次」,超過就擋。抓太快會撞到。
CAPTCHA
「我不是機器人」那種驗證。網站用來擋自動化流量的手段之一。
robots.txt
網站根目錄的一個檔,宣告「哪些頁歡迎/不歡迎被機器人抓」。是慣例規範,不是技術強制。
API key
呼叫付費服務的「鑰匙」,綁定帳號與計費。Keyless 的賣點就是「不用這個」。
Credit / 額度
託管服務的計量單位,通常 1 credit ≈ 抓 1 頁;難抓的站(開隱身模式)一頁可能扣多個 credit。
Markdown
輕量純文字格式(標題、粗體、清單)。乾淨、好讀、AI 最好消化——LLM-ready 工具的標準輸出。
RAG
Retrieval-Augmented Generation。先抓外部資料當「參考書」,再讓 AI 根據它回答。爬蟲常是 RAG 的第一步。
CDP
Chrome DevTools Protocol。直接用程式驅動真實 Chrome 的協定,能帶你的登入狀態,自動化程度高。
PART · 15

延伸資源