ScrapeGraphAIは、LLMとグラフロジックを組み合わせてWebサイトやローカルファイル(HTML、XML、JSON、Markdownなど)からデータを抽出するPythonライブラリです。ユーザーは抽出したい情報をプロンプトで指定するだけで、パイプラインが自動でスクレイピングと構造化を行います。PyPIで配布され、LangChainベースで多数のLLMプロバイダーに対応しています。
中核は`scrapegraphai/graphs`配下の各種Graphクラス(`SmartScraperGraph`、`JSONScraperGraph`、`CSVScraperGraph`など)です。`AbstractGraph`と`BaseGraph`がノードの実行順序を管理し、Playwright(`docloaders/chromium.py`)でページを取得、`html2text`やBeautifulSoupでHTMLをクリーニングし、LLM(OpenAI、Ollama、Anthropicなど)にプロンプトとコンテンツを渡して情報を抽出します。設定は`graph_config`辞書で`llm.model`や`headless`などを指定し、`.run()`を呼ぶと辞書形式の結果が返る設計です。依存関係は`pyproject.toml`で確認でき、`playwright install`が別途必要な点がREADMEに明記されています。
- STEP 01
`pip install scrapegraphai`を実行した後、READMEの注意書き通り`playwright install`を追加実行しないとブラウザ取得部分でエラーになります。
- STEP 02
OllamaやOpenAIなどLLMプロバイダーのAPIキーまたはローカルモデルを`graph_config`に設定する必要があり、設定ミスがあるとLLM呼び出しの段階で失敗します。
- STEP 03
`SmartScraperGraph(prompt=..., source=..., config=...)`を作成し`.run()`を呼ぶと、対象ページのスクレイピングとLLM推論が実行され、数秒から数十秒待つことになります。
- STEP 04
実行結果として`description`や`founders`のようなキーを持つPython辞書が返り、`json.dumps`で整形表示できることをREADMEのサンプル出力で確認できます。
- STEP 05
テストを回す場合は`uv sync`と`uv run playwright install`が前提で、`pytest -m unit`は高速ですが`--integration`付きの実行にはOPENAI_APIKEYなど実際のAPIキーが必要です。
- STEP 06
Dockerで試す場合は`Dockerfile`にある通り`scrapegraphai`本体と`burr`拡張、Playwright依存パッケージが順にインストールされるため、初回ビルドはやや時間がかかります。
URLまたはローカルファイルとプロンプトを渡すだけで、会社概要や創業者情報、SNSリンクといった構造化データがPython辞書(JSON)として手に入ります。SmartScraperGraph以外にもCSV・JSON・XML・ドキュメント・検索(SearchGraph)・コード生成・音声出力用のGraphクラスが用意されており、用途に応じて選べる状態です。
Python 3.12以上が必須(`requires-python = >=3.12,<4.0`)であり、古い環境ではインストールに失敗します。
LLM呼び出しを伴うためOpenAIなど有料APIのキーが必要になる場合があり、無料でOllamaローカルモデルを使う場合も別途Ollamaサーバーの起動が要求されます。
`playwright install`を忘れるとブラウザベースの取得(chromium.py)が動かず、README自身が明記する落とし穴です。
READMEの冒頭で公式クラウド版ScrapeGraphAI.comへの誘導が強調されており、OSS版とクラウド版で機能差がある可能性があります(本レポート内の情報だけでは差分は不明です)。
WebスクレイピングにLLMの柔軟な情報抽出を組み合わせたいPython開発者、特にプロンプトベースで抽出ロジックを都度書き直したくない人に向いています。テストインフラ(unit/integration分離、モックサーバー、複数LLMプロバイダー向けフィクスチャ)が`tests/README_TESTING.md`に具体的に整備されており、CI(release.yml、codeql.yml)も稼働している点から、実際にメンテナンスされているプロジェクトだと判断できます。ただしAPIキーやPlaywrightのセットアップなど外部要因への依存が多いため、README記載の手順通りに環境を用意しないと動作確認自体ができない点は留意してください。