Home
Login

LLMとAIエージェント向けに最適化された、オープンソースの高性能ウェブクローラーおよびデータ抽出ツール

Apache-2.0Python 46.0kunclecode Last Updated: 2025-06-18

Crawl4AI - LLMに最適化されたオープンソースのインテリジェントウェブクローラー

プロジェクト概要

Crawl4AIは、LLM、AIエージェント、およびデータパイプライン向けに特別に設計された、高速でAI対応のウェブクローラーです。完全にオープンソースで柔軟性があり、リアルタイムパフォーマンスのために構築されており、開発者に比類のない速度、精度、およびデプロイの容易さを提供します。

コア機能

🤖 LLM向けに構築

  • RAGおよびファインチューニングアプリケーション向けに最適化された、インテリジェントで簡潔なMarkdownを生成
  • AIモデル処理に適したクリーンな構造化コンテンツを提供
  • 構造化データ抽出のために、すべてのLLM(オープンソースおよびプロプライエタリ)をサポート

⚡ 閃光のような速度

  • リアルタイムで費用対効果の高いパフォーマンスで、6倍高速な結果を提供
  • 非同期アーキテクチャに基づいており、大規模な同時処理をサポート
  • システムメモリに応じて同時実行性を動的に調整できる、メモリアダプティブスケジューラ

🌐 柔軟なブラウザ制御

  • セッション管理、プロキシサポート、およびカスタムフック
  • ユーザー自身のブラウザをサポートし、完全な制御を提供し、ボット検出を回避
  • ブラウザプロファイル管理、認証状態、Cookie、および設定を保存
  • Chromium、Firefox、およびWebKitのマルチブラウザをサポート

🧠 ヒューリスティックインテリジェンス

  • 高度なアルゴリズムを使用して効率的な抽出を行い、高価なモデルへの依存を軽減
  • BM25アルゴリズムフィルタリング、コア情報を抽出し、無関係なコンテンツを削除
  • インテリジェントなコンテンツのクリーンアップとノイズ除去処理

主要な機能モジュール

📝 Markdown生成

  • クリーンなMarkdown: 正確な形式の構造化されたMarkdownを生成
  • 適応型Markdown: ヒューリスティックフィルタリングに基づいて、ノイズと無関係な部分を削除
  • 引用と参照: ページリンクをクリーンな引用付きの番号付き参照リストに変換
  • カスタム戦略: ユーザーは特定のニーズに合わせてMarkdown生成戦略を作成可能

📊 構造化データ抽出

  • LLM駆動抽出: すべてのLLMをサポートして構造化データ抽出を実行
  • チャンク戦略: ターゲットコンテンツ処理のために、チャンク(トピック、正規表現、文レベルに基づく)を実装
  • コサイン類似度: ユーザーのクエリに基づいて、関連するコンテンツブロックを見つけてセマンティック抽出を実行
  • CSSセレクター抽出: XPathおよびCSSセレクターを使用して高速なパターン抽出を実行
  • パターン定義: カスタムパターンを定義して、反復パターンから構造化されたJSONを抽出

🔎 クロールとスクレイピング機能

  • メディアサポート: 画像、オーディオ、ビデオ、およびレスポンシブ画像形式を抽出
  • 動的クローリング: JavaScriptを実行し、非同期/同期の動的コンテンツ抽出を待機
  • スクリーンショット機能: クロール中にページスクリーンショットをキャプチャして、デバッグまたは分析に使用
  • 生データクローリング: 生のHTMLまたはローカルファイルを直接処理
  • 包括的なリンク抽出: 内部、外部リンク、および埋め込まれたiframeコンテンツを抽出
  • カスタマイズ可能なフック: 各ステップでフックを定義して、クローラの動作をカスタマイズ
  • キャッシュメカニズム: データをキャッシュして速度を向上させ、重複した取得を回避
  • 遅延読み込み処理: 画像が完全に読み込まれるまで待機し、遅延読み込みによってコンテンツが失われないようにする

🚀 デプロイと統合

  • Docker化された設定: デプロイを容易にするFastAPIサーバーを備えた最適化されたDockerイメージ
  • 安全な認証: APIセキュリティを確保するための組み込みのJWTトークン認証
  • APIゲートウェイ: 安全なトークン認証を備えたAPIワークフローをワンクリックでデプロイ
  • 拡張可能なアーキテクチャ: 大規模な本番環境向けに設計され、サーバーパフォーマンスを最適化
  • クラウドデプロイ: 主要なクラウドプラットフォーム向けにすぐに使用できるデプロイ構成を提供

インストール方法

Pythonパッケージのインストール

pip install -U crawl4ai

crawl4ai-setup

crawl4ai-doctor

Dockerデプロイ

docker pull unclecode/crawl4ai:0.6.0-rN
docker run -d -p 11235:11235 --name crawl4ai --shm-size=1g unclecode/crawl4ai:0.6.0-rN

# webUI:http://localhost:11235/playground

基本的な使用例

簡単なウェブスクレイピング

import asyncio
from crawl4ai import *

async def main():
    async with AsyncWebCrawler() as crawler:
        result = await crawler.arun(
            url="https://www.nbcnews.com/business",
        )
        print(result.markdown)

if __name__ == "__main__":
    asyncio.run(main())

コマンドラインインターフェース

crwl https://www.nbcnews.com/business -o markdown

crwl https://docs.crawl4ai.com --deep-crawl bfs --max-pages 10

crwl https://www.example.com/products -q "Extract all product prices"

LLM構造化データ抽出

import os
import asyncio
from crawl4ai import AsyncWebCrawler, BrowserConfig, CrawlerRunConfig, CacheMode, LLMConfig
from crawl4ai.extraction_strategy import LLMExtractionStrategy
from pydantic import BaseModel, Field

class OpenAIModelFee(BaseModel):
    model_name: str = Field(..., description="Name of the OpenAI model.")
    input_fee: str = Field(..., description="Fee for input token for the OpenAI model.")
    output_fee: str = Field(..., description="Fee for output token for the OpenAI model.")

async def main():
    browser_config = BrowserConfig(verbose=True)
    run_config = CrawlerRunConfig(
        word_count_threshold=1,
        extraction_strategy=LLMExtractionStrategy(
            llm_config = LLMConfig(provider="openai/gpt-4o", api_token=os.getenv('OPENAI_API_KEY')),
            schema=OpenAIModelFee.schema(),
                      extraction_type="schema",
            instruction="""From the crawled content, extract all mentioned model names along with their fees for input and output tokens. 
            Do not miss any models in the entire content. One extracted model JSON format should look like this: 
            {"model_name": "GPT-4", "input_fee": "US$10.00 / 1M tokens", "output_fee": "US$30.00 / 1M tokens"}."""
        ),            
        cache_mode=CacheMode.BYPASS,
    )
    
    async with AsyncWebCrawler(config=browser_config) as crawler:
        result = await crawler.arun(
            url='https://openai.com/api/pricing/',
            config=run_config
        )
        print(result.extracted_content)

if __name__ == "__main__":
    asyncio.run(main())

最新バージョン機能 (v0.6.0)

🌍 世界認識クローリング

地理位置、言語、タイムゾーンを設定して、実際の地域固有のコンテンツを取得:

run_config = CrawlerRunConfig(
    url="https://browserleaks.com/geo",
    locale="en-US",
    timezone_id="America/Los_Angeles",
    geolocation=GeolocationConfig(
        latitude=34.0522,
        longitude=-118.2437,
        accuracy=10.0,
    )
)

📊 テーブルからDataFrameへの抽出

HTMLテーブルをCSVまたはpandas DataFrameとして直接抽出:

results = await crawler.arun(
    url="https://coinmarketcap.com/?page=1",
    config=crawl_config
)

raw_df = pd.DataFrame()
for result in results:
    if result.success and result.media["tables"]:
        raw_df = pd.DataFrame(
            result.media["tables"][0]["rows"],
            columns=result.media["tables"][0]["headers"],
        )
        break

🚀 ブラウザプーリング

ページ起動時にウォームアップされたブラウザインスタンスを使用し、遅延とメモリ使用量を削減

🔌 MCP統合

モデルコンテキストプロトコルを介して、Claude CodeなどのAIツールに接続:

claude mcp add --transport sse c4ai-sse http://localhost:11235/mcp/sse

技術アーキテクチャ

コアコンポーネント

  • 非同期クローラエンジン: Playwrightベースの高性能非同期アーキテクチャ
  • コンテンツフィルタリング戦略: トリミングフィルタやBM25フィルタを含む、さまざまなフィルタリングアルゴリズム
  • 抽出戦略: CSSセレクター、LLM、およびカスタム抽出戦略をサポート
  • Markdownジェネレーター: インテリジェントなコンテンツをAIフレンドリーなMarkdown形式に変換
  • ブラウザ管理: 完全なブラウザライフサイクル管理とセッション制御

サポートされている抽出方法

  1. CSSセレクター抽出: 高速で正確な構造化データ抽出
  2. LLM抽出: 大規模言語モデルを使用してインテリジェントなコンテンツ理解を実現
  3. JavaScript実行: 動的コンテンツ処理とインタラクション
  4. 正規表現: パターンマッチングとテキスト処理
  5. XPathセレクター: 高度なDOM要素の特定

パフォーマンスの利点

  • 6倍の速度向上: 従来のクローラツールと比較して
  • メモリ最適化: インテリジェントなメモリ管理とガベージコレクション
  • 同時処理: 数千のURLの同時クローリングをサポート
  • キャッシュメカニズム: インテリジェントなキャッシュにより、重複するリクエストを削減
  • リソース管理: 適応型リソース割り当てと制限

アプリケーションシナリオ

データサイエンスと研究

  • 学術論文と研究データの収集
  • 市場調査と競合分析
  • ソーシャルメディアデータマイニング

AIと機械学習

  • トレーニングデータの収集と前処理
  • RAGシステムコンテンツの取得
  • 知識グラフの構築

ビジネスインテリジェンス

  • 価格監視と比較
  • ニュースと世論調査
  • 企業データ集約

コンテンツ管理

  • ウェブサイトの移行とバックアップ
  • コンテンツ集約と配信
  • SEO分析と最適化

開発ロードマップ

  • グラフクローラ: グラフ検索アルゴリズムを使用してインテリジェントなウェブサイトトラバーサルを実行
  • 問題駆動型クローラ: 自然言語駆動のウェブページ検出とコンテンツ抽出
  • 知識最適化クローラ: データ抽出を最小限に抑えながら、知識の取得を最大化
  • エージェントクローラ: 複雑な複数ステップのクローリング操作のための自律システム
  • 自動化されたパターンジェネレーター: 自然言語を抽出パターンに変換
  • ドメイン固有のクローラ: 一般的なプラットフォーム向けに事前構成されたエクストラクタ

コミュニティとサポート

Crawl4AIには活発なオープンソースコミュニティサポートがあり、コードの貢献、問題の報告、および提案を歓迎します。プロジェクトはApache 2.0ライセンスに従い、完全にオープンソースで無料で使用できます。

まとめ

Crawl4AIは、特にAI時代の背景において、ウェブクローリング技術の最新の進歩を代表しています。従来のクローラのすべての機能を提供するだけでなく、最新のAIアプリケーション向けに特別に最適化されており、データサイエンティスト、AI研究者、および開発者にとって理想的な選択肢となっています。そのオープンソースの特性と活発なコミュニティを通じて、Crawl4AIはウェブデータ抽出技術の民主化と標準化を推進しています。