我把 Crawl4AI 套用在五種頁面上測試——優勢在哪裡、弱點又在哪裡

最後更新於 August 17, 2026
我把 Crawl4AI 套用在五種頁面上測試——優勢在哪裡、弱點又在哪裡
AI 摘要
有些第三方爬蟲比較文章把「Adaptive Intelligence」——也就是能學習網站、在版面改版後自我修復的選擇器——歸功於 Crawl4AI。但我在實際測試的 API 範圍內,並沒有看到這種行為。Crawl4AI 真正提供的是:基於瀏覽器的 Markdown 生成,以及 CSS/XPath 擷取。Scrapling 則在其自己的評論中有記載限制下,提供了另一套自適應選擇器功能。我用 Crawl4AI 0.9.0 跑了五種已知正確答案的頁面類型:靜態商品目錄、JavaScript 渲染的商品目錄、夾在大量版型內容中的文章、刻意製造的 500 錯誤,以及有連結的多頁圖譜。

有些第三方爬蟲比較文章把「Adaptive Intelligence」——也就是能學習網站、在版面改版後自我修復的選擇器——歸功於 Crawl4AI。但我在實際測試的 API 範圍內,並沒有看到這種行為。Crawl4AI 真正提供的是:基於瀏覽器的 Markdown 生成,以及 CSS/XPath 擷取。 Scrapling 則在其自己的評論中有記載限制下,提供了另一套自適應選擇器功能。

Crawl4AI five page test matrix

我用 Crawl4AI 0.9.0 跑了五種已知正確答案的頁面類型:靜態商品目錄、JavaScript 渲染的商品目錄、夾在大量版型內容中的文章、刻意製造的 500 錯誤,以及有連結的多頁圖譜。測試中的 Markdown 與 schema 擷取路徑都回傳了預期的 fixture 內容。原始 Markdown 會保留版面雜訊,深度爬取需要針對頁面設定等待條件,而一般的 500 錯誤則被貼上了帶有反爬意味的錯誤標籤。

Crawl4AI 到底是什麼

先從大多數人在安裝時最容易搞錯的地方說起。Crawl4AI 不是一個小型 Python 解析器。第一次執行 crawl4ai-setup 時,它會悄悄下載兩套完整瀏覽器環境——Playwright 和 Patchright——一旦理解這一點,整個工具的定位就很清楚了:它本質上是一個可控的無頭瀏覽器,上面再疊了一層 Markdown 轉換器,披著爬蟲的外衣。

官方定位上,它是一個開源、Apache-2.0 授權的函式庫,用來把網頁轉成 Markdown,供 RAG 流程、代理程式與資料工作流使用。我測試的是 v0.9.0。依照 官方快速開始 的說明,它的核心原語包括 AsyncWebCrawlerBrowserConfigCrawlerRunConfig、Markdown 生成,以及基於 CSS/XPath 或 LLM 的擷取策略。

真正重要的心智模型是這樣:多數解析函式庫是發出 HTTP 請求後處理回傳的位元組;Crawl4AI 則是直接驅動真實瀏覽器。瀏覽器渲染是內建功能,因此安裝成本比純 HTTP 解析器高得多,而要穩定擷取非同步渲染出的元素,往往還得明確設定等待條件。我在這裡測試到的內容,沒有任何一項會在版面改版後自動重寫選擇器。除非有明確的官方來源與可重現的 API,否則應把「自我修復」的說法視為第三方比較文章的誤植。

核心功能,以及背後怎麼運作

單頁流程是它的核心。你把 AsyncWebCrawler 指向一個 URL,它會在瀏覽器中載入頁面,然後回傳 Markdown。官方 example.com 的快速開始流程中,這個往返耗時 1.81 秒,並回傳乾淨的 200 狀態。沒有什麼花俏技巧,但它證明了最基本的流程在幾乎零設定下就能運作——不需要 schema、不需要等待、不需要額外的瀏覽器設定。

影片教學(1:02:38):Crawl4AI 官方教學,含快速開始範例的完整 1 小時版本

結構化擷取是第二根支柱,也是 Crawl4AI 最接近「理解」頁面的地方——更精確地說,不是推理,只是你自己寫好的 schema。它不只是把 Markdown 倒出來,而是透過 JsonCssExtractionStrategy 提供 CSS schema,然後回傳你指定欄位的 JSON 物件。在我本機的靜態商品目錄上,它回傳了 6 筆乾淨的 JSON 記錄——商品名稱、分類、價格、評分、詳情頁 URL——與預期的 6 個商品完全一致。這就是「這是一段文字形式的頁面」與「這是一列列資料」之間的差別,而 Crawl4AI 兩者都能從同一次爬取完成。不過,選擇器仍要由你自己定義;工具只會照你給的規則抓,不會替你推斷 schema。

Crawl4AI static and dynamic wins

動態渲染則是瀏覽器支援真正發揮價值的地方。把它指向一個 JavaScript 渲染的商品目錄,並設上 wait_for="css:.product-card",它就會等到前端渲染完成後再開始擷取。我的本地 JS fixture 在 Markdown 與 schema 輸出中都達到了 8/8 商品召回,耗時約 1.56 秒。至於公開的 Quotes to Scrape JS 頁面,它成功抓到了渲染後的引言,還儲存了可用的截圖——這類內容單純的 HTTP 請求根本看不到,因為初始 HTML 裡面沒有可解析的內容。

再來是規模與爬行能力。arun_many() 以並行方式跑了六個本地詳情頁,完整達成 6/6 召回,耗時 3.76 秒。Crawl4AI 也提供深度爬取策略——BFS、DFS、BestFirst——可沿著連結圖譜進行探索,並設定深度上限、頁面數量上限、過濾條件與評分規則。一次 BFS 深度爬取走訪了我 fixture 首頁的連結圖譜,抓回五個頁面。這也是宣傳說法與實際效果開始出現落差的地方,下面我會再說明。

安裝:沒人會寫在 README 開頭的那段

Crawl4AI two browser install cost

我這台機器上的安裝體驗,一方面比預期順利,另一方面也比預期更重。pip install -U crawl4ai 與 smoke test 在 macOS arm64、Python 3.14.2 上都成功了。PyPI 的 >=3.10 條件本來就包含 3.14;這個結果只能證明我測試的安裝與流程可行,不能推廣成更廣泛的相容性保證。

真正有阻力的是 setup 步驟。crawl4ai-setup 會為 Playwright 和 Patchright 兩套環境下載瀏覽器資產——包括 Chrome for Testing、FFmpeg、Headless Shell。如果你用的是硬碟空間很緊或流量計費的筆電,這就是實打實的成本,而且官方文件只是順帶提到,並沒有放在最前面。接著 crawl4ai-doctor 通過,並在 14.65 秒 內爬完 crawl4ai.com,這是個不錯的端到端 smoke test,但不能拿來當任何性能基準——我不會從這個數字延伸出速度結論。

如果要自己評估,安裝部分的重點是:不只要預留 pip 安裝時間,也要預留瀏覽器下載成本。這更像是在架起一個無頭瀏覽器環境,而不是把某個函式庫丟進腳本裡。你在抓第一個真實頁面之前,磁碟裡就已經落地兩套瀏覽器堆疊,而這筆一次性的成本,無論你之後用不用得到 Patchright 的隱匿層都要先付出。

實測:哪些地方穩、哪些地方要注意

有四個結果值得仔細記下來,因為它們正是行銷頁通常會簡化掉、甚至在某些情況下誤標的細節。

Crawl4AI Books to Scrape markdown output

兩個公開示範頁面也順利跑完了正常路徑。Books to Scrape 首頁,Crawl4AI 在 2.43 秒內產生了 13,476 個字元 的 Markdown。公開的 Quotes JS 頁面則在大約 3.1 秒內回傳了 1,666 個已渲染的 Markdown 字元。這些結果都不能用來證明規模、惡意網站、長時間穩定性、session、proxy、重試或記憶體行為。

文章型 fixture 揭露了 Markdown 品質的一個提醒。 Crawl4AI 抓到了標題與全部 3/3 段落——這很好。但原始 Markdown 也保留了導覽文字、相關連結、訂閱提示與頁尾內容。這不是 bug;如果沒有內容過濾器或目標選擇器,「把這個頁面轉成 Markdown」字面上就是整個頁面都轉出來。重點在於,要把「原始 Markdown 轉換」與「乾淨的文章擷取」區分開來。如果你要的是後者,就會用像 PruningContentFilter 這樣的內容過濾器,或設定目標選擇器——但我還沒有對這部分做壓力測試,所以不會替它下「乾淨度」結論。

Crawl4AI 500 mislabeled as anti-bot

那個壞掉的頁面,反而最能說明問題。 我故意回傳了一個只有極小內文的 HTTP 500。Crawl4AI 回傳了 success=false 與 500 狀態,這是對的;但錯誤訊息卻把它描述成 「Blocked by anti-bot protection: Structural: minimal_text on small page」。實際上根本沒有反爬牆,只有一個很小的錯誤頁。Crawl4AI 的結構性 heuristic 看到可見文字很少,就直接套用了反爬解釋。對任何建立在其上的人來說,這很重要:不要直接相信「anti-bot」標籤。先檢查狀態碼與實際回應,再判斷是不是網站真的在擋你。原始結果放在 benchmark repo 的 results/local_failure_500.json

深度爬取需要刻意設定。 直接對動態頁做爬取並加入 wait_for 後,結果乾淨;但 BFS 深度爬取找到動態商品目錄時卻回傳失敗。這與在渲染完成前讀取頁面的 minimal-text 分類一致,而深度爬取沒有套用直接爬取時的等待條件。在五個頁面中,有三個成功、兩個失敗。由於這裡沒有展示加入等待條件後的重跑,因此這個判斷仍然只是推論,還不是已被證實的因果。

數字最後落在哪裡

Measured results chart: Runtime across the tested pages

測試結果觀察到的實際耗時(單次擷取)
快速開始(example.com成功,2001.81 秒
本地靜態商品目錄(Markdown)6/6 商品召回0.731 秒
本地靜態 CSS schema 擷取6 筆 JSON 記錄0.740 秒
本地動態商品目錄(wait_for8/8 商品召回1.559 秒
本地動態 CSS schema 擷取8 筆 JSON 記錄1.561 秒
文章 Markdown3/3 段落(含版面雜訊)0.752 秒
公開 Books to Scrape 首頁13,476 Markdown 字元2.425 秒
公開 Quotes JS 頁面1,666 Markdown 字元,已渲染3.111 秒
arun_many()(6 個本地頁面)6/6 召回3.760 秒
本地 BFS 深度爬取找到 5 個頁面,3 成功 / 2 失敗3.239 秒
刻意製造的 500 頁面失敗,500(誤標為「anti-bot」)0.745 秒

這些都是 smoke test 的耗時,不是性能基準:文章沒有說明硬體、重複次數、冷/熱啟動、快取狀態、並行控制或變異範圍。它們只能說明列出的流程在這台機器上確實完成了。完整的執行成果放在 benchmark repo 目錄 裡。

如果要做可用於決策的性能測試,應該在全新的瀏覽器 session 與重複使用的 session 中各跑一遍每個流程,回報分佈而不是只報單一小數點,鎖定瀏覽器版本,並記錄 CPU、記憶體、快取狀態與並行度。這樣才能把函式庫開銷、瀏覽器啟動成本與網路波動分開來看。

需求在本次評論中的適配度主要條件
將頁面渲染後轉成 Markdown適合先過濾版面雜訊,再把輸出當成文章乾淨版
擷取 schema 形式的 JSON適合仍需要自己撰寫與維護 CSS schema
等待非同步頁面內容支援需要明確、且針對目標頁面的 wait_for 條件
深度爬取動態頁面有條件適用需要傳遞 readiness 規則;本次預設值會出現部分失敗
當作輕量、低依賴的 HTTP 解析器使用不適合瀏覽器資產與其維護本身就是部署成本的一部分
使用自我修復選擇器本次測試不支援不要從其他比較文案推斷它有這項功能

優點與缺點

優點:

  • 一個函式庫同時支援原始 Markdown 與 CSS schema 結構化 JSON,不需要把兩個工具硬接在一起。
  • 內建瀏覽器渲染;對非同步渲染的目標可搭配明確的 wait_for
  • 本次測試中的單頁流程都在上面列出的時間內完成,沒有額外宣稱相對速度優勢。
  • Apache-2.0 授權,對商業使用友善,沒有 copyleft 顧慮。
  • 專案活躍、近期有更新,社群規模也不小。

缺點:

  • 首次安裝很重,兩套瀏覽器環境的成本在導言裡講得太輕。
  • 原始 Markdown 會帶入版面雜訊,除非你另外設定內容過濾器。
  • 深度爬取不會自動等待動態頁面,你得逐次配置,否則就會失敗。
  • 失敗訊息有時會把單純錯誤誤判成「anti-bot」,日誌看起來很混亂。
  • 沒有自適應選擇器;雖然某些比較文案這麼暗示,但實際上 schema 是手動撰寫且靜態的。
  • 你需要自己運行與維護瀏覽器環境,包括更新與相容性破壞。

適合誰,不適合誰

如果你是正在打造 RAG 或 agent 流程的開發者,能接受無頭瀏覽器環境,並且希望同一次爬取同時拿到 Markdown 與結構化 JSON,那 Crawl4AI 值得評估。這次測試沒有涵蓋惡意網站抗性、長時間穩定性、記憶體、session、重試、proxy 或正式部署,所以這裡的建議只限於本次實測到的工作流。

如果你想要的是一個極小、低依賴的 HTTP 解析器,那就不適合;如果你無法負擔瀏覽器下載所需的磁碟與頻寬,也不適合;如果你不想在正式環境裡自己承擔瀏覽器堆疊的維護責任,也建議跳過。尤其是如果你是衝著自我修復選擇器來的,那更不用考慮——這不是它的能力,把工作流建立在它沒有的功能上,之後只會踩雷。若你的目標只是擷取乾淨的文章文字、並且去除版面雜訊,那麼一個更輕量、專門做這件事的工具可能更適合你。

替代方案,以及 Thunderbit 在哪裡

最誠實的說法是:Crawl4AI 是一個免費、開源、由你自行主機與維護的函式庫。你拿到的是完全控制權與沒有供應商使用費,但也要自己承擔運算、頻寬、儲存、瀏覽器更新、schema 與營運工作。

另一頭則是像 Thunderbit 這類受管理的爬取服務,擷取與抓取都包在 API 後面。Thunderbit 並沒有拿這些 fixture 跑過,所以本文不會對渲染、反爬處理、CAPTCHA、準確度或速度做對應比較。真正相關的比較是營運責任:你是自己架設瀏覽器驅動的函式庫,還是付費讓服務商代管那一層。

差別就在誰來跑瀏覽器。使用 Crawl4AI,你要自己負責渲染、等待條件、schema 與維護。使用受管理 API,則是按次付費,並把一部分營運責任轉交給供應商。本次實驗沒有在結果層面比較這兩條路。

相關 benchmark 評測:完整開源爬蟲比較Firecrawl 自架評測,以及 trafilatura 文章擷取評測

試用 Thunderbit 進行網頁資料擷取

結論

如果你想要的是開源、基於瀏覽器的擷取工具,能輸出 Markdown 與 schema 形式的 JSON,而且你也準備好自己承擔瀏覽器環境,Crawl4AI 算是合理的候選。這次測試中的直接靜態流程與加入等待的動態流程都成功了。Apache-2.0 授權也相當寬鬆,不過一般的相依性與散佈審查仍然不能少。

記得預留瀏覽器資產的成本。原始 Markdown 在變成乾淨文章前需要過濾。深度爬取的等待條件要手動設計,而日誌裡寫著「anti-bot」時,應先對照狀態碼與回應內容。schema 選擇器仍然得由你自己撰寫與維護。這些就是本次測試得出的決策邊界;至於正式規模與惡意網站行為,仍有待進一步驗證。

試用 Thunderbit 進行網頁資料擷取 Get Started Free

常見問題

Crawl4AI 有自適應或自我修復選擇器嗎? 沒有。雖然有些比較文章把它說成具備「adaptive intelligence」,但 Crawl4AI 其實只會對你寫好的 CSS/XPath schema 進行匹配——它不會去辨識元素指紋,也不會在版面改變後自動重新定位。測試中,結構化擷取使用我手動定義的 schema,成功達到 6/6 與 8/8 的召回。若網站的 class 名稱改了,你的 schema 也會跟著壞掉,直到你更新它為止。自我修復式元素追蹤是別的函式庫的能力,不是這個工具。

為什麼安裝體積這麼大? crawl4ai-setup 會為 Playwright 和 Patchright 下載完整瀏覽器資產——Chrome for Testing、FFmpeg 與 Headless Shell。這就是把真實瀏覽器渲染一起交付所需的成本。你必須為磁碟與頻寬預留空間;它比純 HTTP 解析器重得多,而且即使你的工作根本沒用到隱匿堆疊,這筆成本也一樣要付。

Crawl4AI 支援 JavaScript 渲染頁面嗎? 可以,因為它驅動的是實際的無頭瀏覽器。測試中,加入 wait_for="css:.product-card" 的動態商品目錄拿到了完整 8/8 商品召回,公開的 Quotes JS 頁面也能正常渲染。要注意的是,深度爬取不會自動把這個等待條件套用到新發現的頁面上——我用 BFS 爬到的一個動態頁面就因為沒等到渲染而失敗。等待條件得由你在每次爬取時自行設定。

Crawl4AI 會給我乾淨的文章文字,還是整頁內容? 預設是整頁。在測試中,它抓到了全部正文段落,但同時也保留了導覽、相關連結與頁尾內容。如果你要的是乾淨文章擷取,應該使用內容過濾器(例如 PruningContentFilter)或目標選擇器,而不是只靠原始 Markdown。

我能信任 Crawl4AI 的錯誤訊息嗎? 要保留一點懷疑。那個故意製造、內文很少的 500 錯誤頁面,只因為可見文字太少,就被標成「Blocked by anti-bot protection」——實際上並沒有反爬牆。這個 原始結果 放在 benchmark repo 裡。每次都先檢查真正的 HTTP 狀態碼與回應內容,再判斷網站是不是在擋你。

Ke
Ke
Thunderbit 技術長|資深資料科學家與機器學習專家 Ke Shen 在機器學習與資料科學領域擁有近十年經驗,畢業於哥倫比亞大學,曾任 Walmart Labs 資深資料科學家。他精通 Python、R、Java 與統計學,且具備深受同儕認可的深厚專業,分享如何將複雜的 AI 演算法從理論落實到可投入生產的架構的實戰見解。
目錄
Thunderbit · AI 網頁資料代理

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

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