命令列工具
D4Vinci/Scrapling avatar
D4Vinci/Scrapling

Scrapling:從單次請求到完整爬蟲的自適應抓取框架

一個自適應網頁抓取框架,可以處理從單一請求到全面抓取的所有內容!

81,121 個 Star8,199 個 ForkPythonBSD-3-Clause

秒懂

它是什麼?
基於 D4Vinci/Scrapling 的 README,介紹其自適應解析器、抓取器、爬蟲、命令列工具和安裝方式。
適合誰用?
Scrapling 是一個多層抓取框架,其 README 強調自適應解析、隱身和瀏覽器抓取,以及大規模爬蟲運行。倉庫提供了程式碼範例、安裝說明和自述的效能基準,但效能和反機器人聲明需要獨立測試驗證,README 本身沒有提供這類驗證。
可以商用嗎?
可以。BSD-3-Clause 是寬鬆授權:你可以使用、修改並販售以它為基礎的軟體,只需保留著作權與授權聲明。
還在維護嗎?
有在維護。儲存庫最近一次提交在 1 天前。
用什麼語言寫的?
主要是 Python(依據 GitHub 的語言統計)。

以上回答依據專案的 GitHub 資料(最近同步於 2026年9月15日)與我們的分析,不構成法律意見。

開源專案深度解析

覆蓋範圍很廣的自適應抓取框架

Scrapling 是一個 Python 網頁抓取框架,其 README 稱它具有自適應能力,並且可以從單次請求處理到完整的規模化爬取。README 將專案分為三個主要層面:用於取得頁面的抓取器,可以在網站變化後重新定位元素的解析器,以及用於並發、多會話爬取的 spider 框架。倉庫元資料將語言列為 Python,授權為 BSD-3-Clause,首頁指向 Scrapling 文件站點。元資料還記錄了 72,624 個 star、7,221 個 fork 和 10 個未關閉 issue,預設分支為 main。

元素追蹤與自適應解析器

README 的核心說法是解析器會學習網站的變化。它展示了兩個程式碼旗標:`auto_save=True` 在首次抓取時儲存元素位置,`adaptive=True` 在頁面結構改變後重新找到這些元素。解析器支援 CSS 選擇器、XPath、文字搜尋、正則搜尋和類似 BeautifulSoup 的 `find_all` 呼叫,並包含用於父元素、兄弟元素和子元素導覽的方法。獨立的 `Selector` 類別可以直接解析 HTML 字串。README 還包含文字提取和元素相似度的基準表,但這些是倉庫自報的數字,本文沒有獨立驗證。它還提到一個自動選擇器產生器,可以為任意元素產生 CSS 或 XPath 選擇器。

抓取器、工作階段與瀏覽器控制

抓取器層透過 `Fetcher` 提供普通 HTTP 請求,透過 `DynamicFetcher` 提供瀏覽器自動化,透過 `StealthyFetcher` 提供隱身抓取。每個抓取器都有對應的工作階段變體,例如 `FetcherSession`、`DynamicSession` 和 `StealthySession`,用於在請求之間保持 cookie 和狀態。README 聲稱隱身抓取器可以繞過 Cloudflare Turnstile 和其他反機器人系統,並提到可選的 DNS-over-HTTPS、代理輪換以及透過 CDP 連線遠端瀏覽器。它還描述了 `capture_xhr`,可以在頁面載入時收集匹配的 XHR 和 fetch 回應。README 還提到網域和廣告攔截,內建了約 3500 個已知廣告和追蹤網域。這些能力都來自 README,沒有提供獨立測試結果。

用於大規模爬蟲的 Spider 框架

spider 框架使用類似 Scrapy 的 API,包含 `start_urls`、非同步 `parse` 回呼以及 `Request` 和 `Response` 物件。README 列出了並發限制、每網域限速、多工作階段路由、透過檢查點暫停和恢復、串流結果以及自動重試被阻止的請求。現成模板包括 `CrawlSpider`、`SitemapSpider` 和 `ShopifySpider`,結果可以匯出為 JSON、JSONL、CSV 或 XML。README 中的範例定義了一個 `QuotesSpider`,它產出條目並跟隨分頁連結。README 還聲稱程式碼庫有 92% 的測試覆蓋率和完整的型別提示覆蓋,並提到開發模式可以將回應快取到磁碟以便重放。它沒有說明具體的最大爬取規模,也沒有提供生產效能資料。

命令列、互動式 Shell、MCP 伺服器與代理技能

Scrapling 包含一個命令列介面。README 展示了 `scrapling shell` 用於互動式抓取 shell,以及 `scrapling extract` 用於直接從終端提取頁面內容到檔案,帶有 CSS 選擇器、模擬和 headless 模式等旗標。該 shell 被描述為可選的,並支援將 curl 請求轉換為 Scrapling 請求等操作。還有一個內建的 MCP 伺服器,用於 AI 輔助抓取,README 稱它可以在多次呼叫之間保持瀏覽器工作階段開啟、截圖並透過 CDP 驅動遠端瀏覽器。倉庫中還有一個 agent skill 目錄,用於教編碼代理使用目前函式庫 API。README 沒有詳細說明 MCP 伺服器的協定版本,也沒有列出支援的 AI 用戶端。

安裝、依賴、授權與資訊缺口

安裝從 Python 3.10 或更高版本開始,執行 `pip install scrapling`,但 README 警告說基礎安裝只包含解析器及其依賴。抓取器和 spider 需要 `scrapling[fetchers]`,然後執行 `scrapling install` 下載瀏覽器。額外功能分為 `scrapling[ai]`、`scrapling[shell]` 和 `scrapling[all]`。Docker 映像可以從 Docker Hub 和 GitHub Container Registry 取得。專案採用 BSD-3-Clause 授權,版權歸 Karim Shoair 所有。授權允許在條件下再分發並宣告不提供擔保,但沒有說明支援、維護或安全保證。README 還包含一個免責聲明,稱該函式庫僅用於教育和研究目的,使用者必須遵守適用法律。README 還指向貢獻指南。

Scrapling 的使用邊界與核驗路徑

可在 Python 3.10 以上的隔離環境執行 pip install scrapling[fetchers],再執行 scrapling install,使用 README 的 Fetcher、StealthyFetcher 與 p.css('.product', adaptive=True) 範例比較結果。需要 spider 時再測試 start_urls、parse、pause/resume 和匯出格式;反機器人能力、速度與網站條款必須以目標站點的合法測試結果判斷。 可在 Python 3.10 以上的隔離環境執行 pip install scrapling[fetchers],再執行 scrapling install,使用 README 的 Fetcher、StealthyFetcher 與 p.css('.product', adaptive=True) 範例比較結果。需要 spider 時再測試 start_urls、parse、pause/resume 和匯出格式;反機器人能力、速度與網站條款必須以目標站點的合法測試結果判斷。 可在 Python 3.10 以上的隔離環境執行 pip install scrapling[fetchers],再執行 scrapling install,使用 README 的 Fetcher、StealthyFetcher 與 p.css('.product', adaptive=True) 範例比較結果。需要 spider 時再測試 start_urls、parse、pause/resume 和匯出格式;反機器人能力、速度與網站條款必須以目標站點的合法測試結果判斷。 可在 Python 3.10 以上的隔離環境執行 pip install scrapling[fetchers],再執行 scrapling install,使用 README 的 Fetcher、StealthyFetcher 與 p.css('.product', adaptive=True) 範例比較結果。需要 spider 時再測試 start_urls、parse、pause/resume 和匯出格式;反機器人能力、速度與網站條款必須以目標站點的合法測試結果判斷。 可在 Python 3.10 以上的隔離環境執行 pip install scrapling[fetchers],再執行 scrapling install,使用 README 的 Fetcher、StealthyFetcher 與 p.css('.product', adaptive=True) 範例比較結果。需要 spider 時再測試 start_urls、parse、pause/resume 和匯出格式;反機器人能力、速度與網站條款必須以目標站點的合法測試結果判斷。 可在 Python 3.10 以上的隔離環境執行 pip install scrapling[fetchers],再執行 scrapling install,使用 README 的 Fetcher、StealthyFetcher 與 p.css('.product', adaptive=True) 範例比較結果。需要 spider 時再測試 start_urls、parse、pause/resume 和匯出格式;反機器人能力、速度與網站條款必須以目標站點的合法測試結果判斷。 可在 Python 3.10 以上的隔離環境執行 pip install scrapling[fetchers],再執行 scrapling install,使用 README 的 Fetcher、StealthyFetcher 與 p.css('.product', adaptive=True) 範例比較結果。需要 spider 時再測試 start_urls、parse、pause/resume 和匯出格式;反機器人能力、速度與網站條款必須以目標站點的合法測試結果判斷。 可在 Python 3.10 以上的隔離環境執行 pip install scrapling[fetchers],再執行 scrapling install,使用 README 的 Fetcher、StealthyFetcher 與 p.css('.product', adaptive=True) 範例比較結果。需要 spider 時再測試 start_urls、parse、pause/resume 和匯出格式;反機器人能力、速度與網站條款必須以目標站點的合法測試結果判斷。 可在 Python 3.10 以上的隔離環境執行 pip install scrapling[fetchers],再執行 scrapling install,使用 README 的 Fetcher、StealthyFetcher 與 p.css('.product', adaptive=True) 範例比較結果。需要 spider 時再測試 start_urls、parse、pause/resume 和匯出格式;反機器人能力、速度與網站條款必須以目標站點的合法測試結果判斷。 可在 Python 3.10 以上的隔離環境執行 pip install scrapling[fetchers],再執行 scrapling install,使用 README 的 Fetcher、StealthyFetcher 與 p.css('.product', adaptive=True) 範例比較結果。需要 spider 時再測試 start_urls、parse、pause/resume 和匯出格式;反機器人能力、速度與網站條款必須以目標站點的合法測試結果判斷。 可在 Python 3.10 以上的隔離環境執行 pip install scrapling[fetchers],再執行 scrapling install,使用 README 的 Fetcher、StealthyFetcher 與 p.css('.product', adaptive=True) 範例比較結果。需要 spider 時再測試 start_urls、parse、pause/resume 和匯出格式;反機器人能力、速度與網站條款必須以目標站點的合法測試結果判斷。 可在 Python 3.10 以上的隔離環境執行 pip install scrapling[fetchers],再執行 scrapling install,使用 README 的 Fetcher、StealthyFetcher 與 p.css('.product', adaptive=True) 範例比較結果。需要 spider 時再測試 start_urls、parse、pause/resume 和匯出格式;反機器人能力、速度與網站條款必須以目標站點的合法測試結果判斷。 可在 Python 3.10 以上的隔離環境執行 pip install scrapling[fetchers],再執行 scrapling install,使用 README 的 Fetcher、StealthyFetcher 與 p.css('.product', adaptive=True) 範例比較結果。需要 spider 時再測試 start_urls、parse、pause/resume 和匯出格式;反機器人能力、速度與網站條款必須以目標站點的合法測試結果判斷。 可在 Python 3.10 以上的隔離環境執行 pip install scrapling[fetchers],再執行 scrapling install,使用 README 的 Fetcher、StealthyFetcher 與 p.css('.product', adaptive=True) 範例比較結果。需要 spider 時再測試 start_urls、parse、pause/resume 和匯出格式;反機器人能力、速度與網站條款必須以目標站點的合法測試結果判斷。 可在 Python 3.10 以上的隔離環境執行 pip install scrapling[fetchers],再執行 scrapling install,使用 README 的 Fetcher、StealthyFetcher 與 p.css('.product', adaptive=True) 範例比較結果。需要 spider 時再測試 start_urls、parse、pause/resume 和匯出格式;反機器人能力、速度與網站條款必須以目標站點的合法測試結果判斷。 可在 Python 3.10 以上的隔離環境執行 pip install scrapling[fetchers],再執行 scrapling install,使用 README 的 Fetcher、StealthyFetcher 與 p.css('.product', adaptive=True) 範例比較結果。需要 spider 時再測試 start_urls、parse、pause/resume 和匯出格式;反機器人能力、速度與網站條款必須以目標站點的合法測試結果判斷。 可在 Python 3.10 以上的隔離環境執行 pip install scrapling[fetchers],再執行 scrapling install,使用 README 的 Fetcher、StealthyFetcher 與 p.css('.product', adaptive=True) 範例比較結果。需要 spider 時再測試 start_urls、parse、pause/resume 和匯出格式;反機器人能力、速度與網站條款必須以目標站點的合法測試結果判斷。 可在 Python 3.10 以上的隔離環境執行 pip install scrapling[fetchers],再執行 scrapling install,使用 README 的 Fetcher、StealthyFetcher 與 p.css('.product', adaptive=True) 範例比較結果。需要 spider 時再測試 start_urls、parse、pause/resume 和匯出格式;反機器人能力、速度與網站條款必須以目標站點的合法測試結果判斷。 可在 Python 3.10 以上的隔離環境執行 pip install scrapling[fetchers],再執行 scrapling install,使用 README 的 Fetcher、StealthyFetcher 與 p.css('.product', adaptive=True) 範例比較結果。需要 spider 時再測試 start_urls、parse、pause/resume 和匯出格式;反機器人能力、速度與網站條款必須以目標站點的合法測試結果判斷。 可在 Python 3.10 以上的隔離環境執行 pip install scrapling[fetchers],再執行 scrapling install,使用 README 的 Fetcher、StealthyFetcher 與 p.css('.product', adaptive=True) 範例比較結果。需要 spider 時再測試 start_urls、parse、pause/resume 和匯出格式;反機器人能力、速度與網站條款必須以目標站點的合法測試結果判斷。

編輯結論

Scrapling 是一個多層抓取框架,其 README 強調自適應解析、隱身和瀏覽器抓取,以及大規模爬蟲運行。倉庫提供了程式碼範例、安裝說明和自述的效能基準,但效能和反機器人聲明需要獨立測試驗證,README 本身沒有提供這類驗證。 可在 Python 3.10 以上的隔離環境執行 pip install scrapling[fetchers],再執行 scrapling install,使用 README 的 Fetcher、StealthyFetcher 與 p.css('.product', adaptive=True) 範例比較結果。需要 spider 時再測試 start_urls、parse、pause/resume 和匯出格式;反機器人能力、速度與網站條款必須以目標站點的合法測試結果判斷。 可在 Python 3.10 以上的隔離環境執行 pip install scrapling[fetchers],再執行 scrapling install,使用 README 的 Fetcher、StealthyFetcher 與 p.css('.product', adaptive=True) 範例比較結果。需要 spider 時再測試 start_urls、parse、pause/resume 和匯出格式;反機器人能力、速度與網站條款必須以目標站點的合法測試結果判斷。 可在 Python 3.10 以上的隔離環境執行 pip install scrapling[fetchers],再執行 scrapling install,使用 README 的 Fetcher、StealthyFetcher 與 p.css('.product', adaptive=True) 範例比較結果。需要 spider 時再測試 start_urls、parse、pause/resume 和匯出格式;反機器人能力、速度與網站條款必須以目標站點的合法測試結果判斷。 可在 Python 3.10 以上的隔離環境執行 pip install scrapling[fetchers],再執行 scrapling install,使用 README 的 Fetcher、StealthyFetcher 與 p.css('.product', adaptive=True) 範例比較結果。需要 spider 時再測試 start_urls、parse、pause/resume 和匯出格式;反機器人能力、速度與網站條款必須以目標站點的合法測試結果判斷。 可在 Python 3.10 以上的隔離環境執行 pip install scrapling[fetchers],再執行 scrapling install,使用 README 的 Fetcher、StealthyFetcher 與 p.css('.product', adaptive=True) 範例比較結果。需要 spider 時再測試 start_urls、parse、pause/resume 和匯出格式;反機器人能力、速度與網站條款必須以目標站點的合法測試結果判斷。 可在 Python 3.10 以上的隔離環境執行 pip install scrapling[fetchers],再執行 scrapling install,使用 README 的 Fetcher、StealthyFetcher 與 p.css('.product', adaptive=True) 範例比較結果。需要 spider 時再測試 start_urls、parse、pause/resume 和匯出格式;反機器人能力、速度與網站條款必須以目標站點的合法測試結果判斷。 可在 Python 3.10 以上的隔離環境執行 pip install scrapling[fetchers],再執行 scrapling install,使用 README 的 Fetcher、StealthyFetcher 與 p.css('.product', adaptive=True) 範例比較結果。需要 spider 時再測試 start_urls、parse、pause/resume 和匯出格式;反機器人能力、速度與網站條款必須以目標站點的合法測試結果判斷。 可在 Python 3.10 以上的隔離環境執行 pip install scrapling[fetchers],再執行 scrapling install,使用 README 的 Fetcher、StealthyFetcher 與 p.css('.product', adaptive=True) 範例比較結果。需要 spider 時再測試 start_urls、parse、pause/resume 和匯出格式;反機器人能力、速度與網站條款必須以目標站點的合法測試結果判斷。 可在 Python 3.10 以上的隔離環境執行 pip install scrapling[fetchers],再執行 scrapling install,使用 README 的 Fetcher、StealthyFetcher 與 p.css('.product', adaptive=True) 範例比較結果。需要 spider 時再測試 start_urls、parse、pause/resume 和匯出格式;反機器人能力、速度與網站條款必須以目標站點的合法測試結果判斷。 可在 Python 3.10 以上的隔離環境執行 pip install scrapling[fetchers],再執行 scrapling install,使用 README 的 Fetcher、StealthyFetcher 與 p.css('.product', adaptive=True) 範例比較結果。需要 spider 時再測試 start_urls、parse、pause/resume 和匯出格式;反機器人能力、速度與網站條款必須以目標站點的合法測試結果判斷。 可在 Python 3.10 以上的隔離環境執行 pip install scrapling[fetchers],再執行 scrapling install,使用 README 的 Fetcher、StealthyFetcher 與 p.css('.product', adaptive=True) 範例比較結果。需要 spider 時再測試 start_urls、parse、pause/resume 和匯出格式;反機器人能力、速度與網站條款必須以目標站點的合法測試結果判斷。 可在 Python 3.10 以上的隔離環境執行 pip install scrapling[fetchers],再執行 scrapling install,使用 README 的 Fetcher、StealthyFetcher 與 p.css('.product', adaptive=True) 範例比較結果。需要 spider 時再測試 start_urls、parse、pause/resume 和匯出格式;反機器人能力、速度與網站條款必須以目標站點的合法測試結果判斷。 可在 Python 3.10 以上的隔離環境執行 pip install scrapling[fetchers],再執行 scrapling install,使用 README 的 Fetcher、StealthyFetcher 與 p.css('.product', adaptive=True) 範例比較結果。需要 spider 時再測試 start_urls、parse、pause/resume 和匯出格式;反機器人能力、速度與網站條款必須以目標站點的合法測試結果判斷。 可在 Python 3.10 以上的隔離環境執行 pip install scrapling[fetchers],再執行 scrapling install,使用 README 的 Fetcher、StealthyFetcher 與 p.css('.product', adaptive=True) 範例比較結果。需要 spider 時再測試 start_urls、parse、pause/resume 和匯出格式;反機器人能力、速度與網站條款必須以目標站點的合法測試結果判斷。 可在 Python 3.10 以上的隔離環境執行 pip install scrapling[fetchers],再執行 scrapling install,使用 README 的 Fetcher、StealthyFetcher 與 p.css('.product', adaptive=True) 範例比較結果。需要 spider 時再測試 start_urls、parse、pause/resume 和匯出格式;反機器人能力、速度與網站條款必須以目標站點的合法測試結果判斷。 可在 Python 3.10 以上的隔離環境執行 pip install scrapling[fetchers],再執行 scrapling install,使用 README 的 Fetcher、StealthyFetcher 與 p.css('.product', adaptive=True) 範例比較結果。需要 spider 時再測試 start_urls、parse、pause/resume 和匯出格式;反機器人能力、速度與網站條款必須以目標站點的合法測試結果判斷。 可在 Python 3.10 以上的隔離環境執行 pip install scrapling[fetchers],再執行 scrapling install,使用 README 的 Fetcher、StealthyFetcher 與 p.css('.product', adaptive=True) 範例比較結果。需要 spider 時再測試 start_urls、parse、pause/resume 和匯出格式;反機器人能力、速度與網站條款必須以目標站點的合法測試結果判斷。 可在 Python 3.10 以上的隔離環境執行 pip install scrapling[fetchers],再執行 scrapling install,使用 README 的 Fetcher、StealthyFetcher 與 p.css('.product', adaptive=True) 範例比較結果。需要 spider 時再測試 start_urls、parse、pause/resume 和匯出格式;反機器人能力、速度與網站條款必須以目標站點的合法測試結果判斷。 可在 Python 3.10 以上的隔離環境執行 pip install scrapling[fetchers],再執行 scrapling install,使用 README 的 Fetcher、StealthyFetcher 與 p.css('.product', adaptive=True) 範例比較結果。需要 spider 時再測試 start_urls、parse、pause/resume 和匯出格式;反機器人能力、速度與網站條款必須以目標站點的合法測試結果判斷。 可在 Python 3.10 以上的隔離環境執行 pip install scrapling[fetchers],再執行 scrapling install,使用 README 的 Fetcher、StealthyFetcher 與 p.css('.product', adaptive=True) 範例比較結果。需要 spider 時再測試 start_urls、parse、pause/resume 和匯出格式;反機器人能力、速度與網站條款必須以目標站點的合法測試結果判斷。

官方來源

  1. Official documentation
  2. Official README
  3. Project repository
  4. Release notes
社群筆記

社群筆記