🔍
Firecrawlその2:セルフホストについて
1. はじめに
-
この記事は?
- この記事は前回のFirecrawlについて記載した記事の続きとなります。前回の記事ではFirecrawlの概要や特徴について紹介しましたが、今回はFirecrawlのセルフホストについて詳しく解説します。
-
前回の記事
- 前回の記事はこちらです。Fiewcrawlの主な機能や利点について解説しており、基本的な使い方や料金プランについても触れています。
2. Firecrawlのセルフホストについて
Fiewcrawlは以下のGithubリポジトリでCodeが公開されています。
-
セルフホスト
- 基本的には上記リポジトリの以下資料を参考にすれば、セルフホストでの実行が可能です。
- 事前準備としてGitやDockerが必要です。
-
セルフホスト手順
- 基本的な手順を記載します。オプションなどについては上記リンクを参照してください。
- Gitリポジトリをクローン
git clone https://github.com/mendableai/firecrawl
- 環境変数を設定
コピーした.envファイルを編集します。必須の部分のみ記載します。cd firecrawl cp ./apps/api/.env.example ./.env
# ===== Required ENVS ====== NUM_WORKERS_PER_QUEUE=8 PORT=3002 HOST=0.0.0.0 REDIS_URL=redis://redis:6379 REDIS_RATE_LIMIT_URL=redis://redis:6379 ## To turn on DB authentication, you need to set up supabase. USE_DB_AUTHENTICATION=false
- Docker Containerをビルドして実行
docker compose build docker compose up
- 起動確認
- ブラウザで以下URLにアクセスして、Bull Queue Manager の画面が表示されれば成功です。
http://localhost:3002/admin/@/queues
- (オプション) APIテスト
クロール エンドポイントをテストする場合は、次のコマンドを実行できます。
curl -X POST http://localhost:3002/v0/crawl \ -H 'Content-Type: application/json' \ -d '{ "url": "https://mendable.ai" }'
- 基本的な手順を記載します。オプションなどについては上記リンクを参照してください。
3. Firecrawlのセルフホスト時の注意点
-
注意点
- 現在、Firecrawlは開発初期段階にあり、完全なセルフホストデプロイの準備はまだ完了していません。
- ローカルでの実行は可能ですが、一部の機能が制限されています。
- 詳細:
- セキュリティ考慮事項
- Firecrawlをパブリックにセルフホストして使用する場合、以下の点に注意が必要です:
- セキュリティ機能が組み込まれていないため、自身でセキュリティ対策を講じる必要があります。
- 過度な負荷やブロックされるリスクがあるため、使用には注意が必要です。
- Firecrawlをパブリックにセルフホストして使用する場合、以下の点に注意が必要です:
また、利用する際には以下のライセンス条項にも注意が必要です。(基本的にAGPL-3.0ライセンス)
業務で使用する場合は、これらの点を考慮し、SaaSバージョンの利用も検討する必要があると思います。
最後に再掲となりますが、前回の記事であげた取得するデータについてもご注意ください。
4. Fiewcrawlの使い方
基本的な使い方については前回の記事を参照してください。
今回はセルフホストをすることで実行可能な,pythonでのスクレイピングとクローリングの例を示します。
- スクレイピングの例
from firecrawl import FirecrawlApp
app = FirecrawlApp(
api_key=API_KEY,
api_url=API_BASE # Firecrawl をローカルで実行する場合は指定する
)
params = {
"pageOptions": {
"onlyMainContent": True, # メインコンテンツのみ取得(default: False)
"includeHtml": True, # HTMLを取得(default: False)
"includeRawHtml": False, # 生のHTMLを取得(default: False)
"screenshot": False, # スクレイピングするページの上部のスクリーンショットを取得(default: False)
"waitFor": 500, # ページの読み込みを待つ時間、単位ミリ秒(default: 0)
"removeTags": [], # 除外するタグ(default: [])
"onlyIncludeTags": [], # 取得するタグ(default: [])
"headers": {}, # リクエストと共に送信するヘッダー(default: {})
"replaceAllPathsWithAbsolutePaths": True, # 相対パスを絶対パスに置換(default: False)
"parsePDF": True # PDFをパース(default: True)
}
}
scrape_result = app.scrape_url(
url="https://www.firecrawl.dev/",
params=params
)
scrape_result
- クローリングの例
from firecrawl import FirecrawlApp
app = FirecrawlApp(
api_key=API_KEY,
api_url=API_BASE # Firecrawl をローカルで実行する場合は指定する
)
params = {
"crawlerOptions": {
"excludes": ["blog/*"], # 除外するURLパターン(default: [])
"maxDepth": 2, # クロールする最大深度(default: 1)
"maxPages": 10, # クロールする最大ページ数(default: 1)
"maxRetries": 3, # リトライする最大回数(default: 3)
"waitBetweenRequests": 500 # リクエスト間の待機時間、単位ミリ秒(default: 0)
}
}
crawl_result = app.crawl_url(
url="https://www.firecrawl.dev/",
params=params
)
crawl_result
5. まとめ
-
まとめ
- セルフホストでの実行が可能なFirecrawlについて、基本的な手順や注意点について解説しました。
- お手軽にでき、またカスタマイズ性も高いため、スクレイピングやクローリングを行いたい場合には有用なツールであると感じました。
- ただし、セキュリティや安定性については注意が必要ですので、業務で使用する場合は慎重に検討することが重要です。
- 今後のアップデートにも期待したいと思います。
-
次回試すこと
- Difyとの連携が可能であるため、次回はその紹介を行いたいと思います。
最後までお読みいただき、ありがとうございました。
6. 参考リンク
以下のリンク先の記事が大変参考になりましたので、ここに記載させていただきます。
Discussion