開源地址:https://github.com/mendableai/firecrawl
01、FireCrawl 項目簡介
Firecrawl 是一款開源、優秀、尖端的 AI 爬蟲工具,專門從事 Web 數據提取,并將其轉換為 Markdown 格式或者其他結構化數據。
Firecrawl 還特別上線了一個新的功能:LLM Extract,即利用大語言模型(LLM)快速完成網頁數據的提取,從而轉換為LLM-ready的數據。
所以無論你是需要為大語言模型(如 GPT)提供數據訓練,還是需要為檢索增強生成(RAG)獲取高質量數據,FireCrawl 都能夠為你提供全面的支持。
02、主要功能
? 強大的抓取能力:幾乎能抓取任何網站的內容,無論是簡單的靜態頁面,還是復雜的動態網頁,它都能夠應對自如。
? 智能的爬取狀態管理:提供了分頁、流式傳輸等功能,使得大規模網頁抓取變得更加高效。此外,它還具備清晰的錯誤提示功能,讓你在爬取過程中可以快速排查問題,保證數據抓取的順利進行。
? 多樣的輸出格式:不僅支持將抓取的內容轉換為 Markdown 格式,還支持將其輸出為結構化數據(如 JSON)。
? 增強 Markdown 解析:優化 Markdown 解析邏輯,能夠輸出更干凈、更高質量的文本。
? 全面的 SDK 支持:提供了豐富的 SDK,支持多種編程語言(如 Go、Rust 等),并全面兼容 v1 API。
? 快速收集相關鏈接:新增了/map 端點,可以快速收集網頁中的相關鏈接。這對于需要抓取大量相關內容的用戶來說,是一個極其高效的功能。
03、FireCrawl應用場景
1. 大語言模型訓練
通過抓取海量網頁內容并將其轉換為結構化數據,FireCrawl 能夠為大語言模型(如 GPT)提供豐富的訓練數據。
這對于希望提升模型表現的開發者或企業來說,FireCrawl 是一個理想的工具。
2. 檢索增強生成(RAG):
FireCrawl 可以幫助用戶從不同網頁中獲取相關數據,支持檢索增強生成(RAG)任務。這意味著你可以通過 FireCrawl 獲取并整理數據,用于生成更加精確、更加豐富的文本內容。
3. 數據驅動的開發項目
如果你的項目依賴大量的網頁數據,比如訓練語言模型、構建知識圖譜、數據分析等等,FireCrawl 是一個不二之選。
它可以幫助你快速獲取所需數據,并將其轉換為你需要的格式,無論是 Markdown 還是 JSON,都能輕松搞定。
4. SEO 與內容優化
對于那些需要進行 SEO 優化或內容監控的項目,FireCrawl 也非常適用。
你可以利用 FireCrawl 爬取競爭對手的網站內容,分析他們的 SEO 策略,或者監控網站內容的變化,幫助你優化自己的網站。
5. 在線服務與工具集成
FireCrawl 提供了易于使用且統一的 API,支持本地部署或在線使用。
你可以將 FireCrawl 無縫集成到現有的服務或工具中,如 Langchain、Dify、Flowise 等,進一步擴展其應用能力。
04、安裝與使用
當然 FireCrawl 是支持本地部署的,通過源碼進行部署安裝服務,但是依賴的語言過多,不僅有Nodejs、Python,還有Rust!還是建議在線體驗!
使用方式
官方項目中列了很多通過curl接口命令的方式,其實這樣就有些繁瑣!
我們可以通過各種API工具來進行請求,使用體驗會更好一些。
也可以通過官方部署的網頁上功能來進行,效果會更加!
最后就是開發者常用的SDK方式,這里以Python語言為例:
? 安裝 Python SDK
代碼語言:javascript
pip install firecrawl-py
? 調用接口,抓取目標網頁數據
代碼語言:javascript
from firecrawl import FirecrawlApp
app = FirecrawlApp(api_key="YOUR_API_KEY")
crawl_result = app.crawl_url('mendable.ai', {'crawlerOptions': {'excludes': ['blog/*']}})
# Get the markdown
for result in crawl_result:
? ? print(result['markdown'])
? 要抓取單個 URL,需要使用 scrape_url 方法。將 URL 作為參數,并以字典形式返回抓取的數據。
代碼語言:javascript
url = 'https://www.xxxx.com'
scraped_data = app.scrape_url(url)
05、總結
作為一名開發者,我們都知道,一個好用的工具可以大大提高我們的工作效率,而 FireCrawl 就是這樣一個值得推薦的工具。
無論你是需要爬取大量數據,還是需要將網頁內容轉換為文檔,FireCrawl 都能夠幫助你輕松實現這些需求。
六、本地部署方式:
配置.env文件
# .env# ===== Required ENVS ======
NUM_WORKERS_PER_QUEUE=8
PORT=3002
HOST=0.0.0.0#for self-hosting using docker, use redis://redis:6379. For running locally, use redis://localhost:6379
REDIS_URL=redis://redis:6379#for self-hosting using docker, use redis://redis:6379. For running locally, use redis://localhost:6379
REDIS_RATE_LIMIT_URL=redis://redis:6379
PLAYWRIGHT_MICROSERVICE_URL=http://playwright-service:3000/html## To turn on DB authentication, you need to set up supabase.
USE_DB_AUTHENTICATION=false# ===== Optional ENVS ======# Supabase Setup (used to support DB authentication, advanced logging, etc.)
SUPABASE_ANON_TOKEN=
SUPABASE_URL=
SUPABASE_SERVICE_TOKEN=# Other Optionals
# use if you've set up authentication and want to test with a real API key
TEST_API_KEY=
# set if you'd like to test the scraping rate limit
RATE_LIMIT_TEST_API_KEY_SCRAPE=
# set if you'd like to test the crawling rate limit
RATE_LIMIT_TEST_API_KEY_CRAWL=
# set if you'd like to use scraping Be to handle JS blocking
SCRAPING_BEE_API_KEY=
# add for LLM dependednt features (image alt generation, etc.)
OPENAI_API_KEY=
BULL_AUTH_KEY=@
# use if you're configuring basic logging with logtail
LOGTAIL_KEY=
# set if you have a llamaparse key you'd like to use to parse pdfs
LLAMAPARSE_API_KEY=
# set if you'd like to send slack server health status messages
SLACK_WEBHOOK_URL=
# set if you'd like to send posthog events like job logs
POSTHOG_API_KEY=
# set if you'd like to send posthog events like job logs
POSTHOG_HOST=# set if you'd like to use the fire engine closed beta
FIRE_ENGINE_BETA_URL=# Proxy Settings for Playwright (Alternative you can can use a proxy service like oxylabs, which rotates IPs for you on every request)
PROXY_SERVER=
PROXY_USERNAME=
PROXY_PASSWORD=
# set if you'd like to block media requests to save proxy bandwidth
BLOCK_MEDIA=# Set this to the URL of your webhook when using the self-hosted version of FireCrawl
SELF_HOSTED_WEBHOOK_URL=# Resend API Key for transactional emails
RESEND_API_KEY=# LOGGING_LEVEL determines the verbosity of logs that the system will output.
# Available levels are:
# NONE - No logs will be output.
# ERROR - For logging error messages that indicate a failure in a specific operation.
# WARN - For logging potentially harmful situations that are not necessarily errors.
# INFO - For logging informational messages that highlight the progress of the application.
# DEBUG - For logging detailed information on the flow through the system, primarily used for debugging.
# TRACE - For logging more detailed information than the DEBUG level.
# Set LOGGING_LEVEL to one of the above options to control logging output.
LOGGING_LEVEL=INFO
進入目錄,安裝部署
docker compose up -d
部署完后訪問:http://localhost:3002/test
只要返回響應是 Hello, world! 就表明本地 Firecrawl 啟動成功了。