WaterCrawlは、ユーザーがWebページからデータを抽出し、大規模言語モデリング(LLM)処理に適したデータ形式に変換するために設計された強力なオープンソースのWebクローラです。Pythonをベースとし、Django、Scrapy、Celeryテクノロジーと組み合わせることで、効率的なウェブクローリングとデータ処理をサポートします。WaterCrawlは、Node.js、Go、PHPを含む複数の言語SDKを提供し、開発者がさまざまなプロジェクトに簡単に統合できます。WaterCrawlは、Docker経由で素早くデプロイしたり、提供されるAPIを使用してカスタマイズすることができます。大量のウェブコンテンツを扱う開発者や企業のために、ウェブデータ抽出プロセスを簡素化するように設計されています。
機能一覧
- 効率的なウェブクローリング:クロールの深さ、速度、対象コンテンツのカスタマイズをサポートし、ウェブデータを迅速に取得します。
- データ抽出とクリーニング:無関係なタグ(スクリプトやスタイルなど)を自動的にフィルタリングし、主要なコンテンツを抽出し、複数の出力形式(JSON、Markdownなど)をサポートします。
- 多言語SDKサポート:Node.js、Go、PHP、Python用のSDKが提供され、さまざまな開発ニーズに対応します。
- リアルタイムの進捗監視:Celeryを経由して、クロールタスクのステータスをリアルタイムで更新します。
- Dockerデプロイのサポート: Docker Composeでローカル環境または本番環境を素早く構築できます。
- MinIOの統合:ファイルの保存とダウンロードをサポートし、大規模データの取り扱いに適しています。
- プラグイン拡張機能:開発者がクローリングや処理ロジックをカスタマイズできるプラグインフレームワークを提供します。
- API統合:API経由でクロールタスクの管理、結果の取得、データのダウンロードをサポートします。
ヘルプの使用
WaterCrawlのインストールと使用は、開発者と技術チームを対象としており、PythonとDockerに精通しているユーザーに適しています。ここでは、インストールと使用方法について詳しく説明する。
設置プロセス
- クローン倉庫
まず、WaterCrawlのGitHubリポジトリをローカルにクローンする:git clone https://github.com/watercrawl/watercrawl.git cd watercrawl
これでWaterCrawlのソースコードがあなたのローカル環境にダウンロードされる。
- Dockerのインストール
DockerとDocker Composeがシステムにインストールされていることを確認してください。 ドッカー公式ウェブサイト ダウンロードしてインストールする。 - 環境変数の設定
入るdocker
ディレクトリにあるサンプル環境設定ファイルをコピーする:cd docker cp .env.example .env
コンパイラ
.env
ファイルで、データベース接続、MinIOストレージアドレスなど、必要なパラメータを設定する。クラウドサーバーなど、非ローカル環境にデプロイする場合は、MinIO設定を更新する必要がある:MINIO_EXTERNAL_ENDPOINT=your-domain.com MINIO_BROWSER_REDIRECT_URL=http://your-domain.com/minio-console/ MINIO_SERVER_URL=http://your-domain.com/
これらの設定により、ファイルのアップロードとダウンロード機能が正しく動作するようになります。設定の詳細は
DEPLOYMENT.md
ドキュメンテーション - Dockerコンテナの起動
Docker Composeを使ってサービスを開始する:docker compose up -d
これにより、Djangoバックエンド、Scrapyクローラー、MinIOストレージを含むWaterCrawlのコアサービスが開始される。
- アプリケーションへのアクセス
ブラウザを開き、次のサイトにアクセスする。http://localhost
サービスが正しく実行されていることを確認する。リモート・サーバーにデプロイされている場合は、以下を置き換えてください。localhost
はドメイン名またはIPアドレスです。
機能 操作の流れ
WaterCrawlのコア機能は、ウェブのクロールとデータ抽出であり、以下は主な機能の詳細なステップです。
ウェブクローラー
WaterCrawlはウェブクローリングにScrapyフレームワークを使用しており、ユーザーはAPIまたはコマンドラインからクロールタスクを開始できる。例えば、クロールタスクを開始するには、以下のようにする:
{
"url": "https://example.com",
"pageOptions": {
"exclude_tags": ["script", "style"],
"include_tags": ["p", "h1", "h2"],
"wait_time": 1000,
"only_main_content": true,
"include_links": true,
"timeout": 15000
},
"sync": true,
"download": true
}
- パラメータの説明::
exclude_tags
指定したHTMLタグ(スクリプトやスタイルなど)をフィルタリングします。include_tags
指定されたタグの中身だけを取り出す。only_main_content
サイドバーや広告などを無視して、ページのメインコンテンツだけを抽出します。include_links
ページ内にリンクがあるかどうか。timeout
クロールのタイムアウトをミリ秒単位で設定します。
- 手続き::
- 上記のJSONリクエストは、SDK(PythonやNode.jsなど)を使用するか、APIを介して直接送信します。
- WaterCrawlは、抽出されたテキスト、リンク、またはその他の指定されたデータを含むクロール結果を返します。
- 結果はJSON、Markdown、その他の形式で保存できる。
データダウンロード
WaterCrawlは、クロール結果のファイル保存をサポートしています。例えば、サイトマップをダウンロードする場合:
{
"crawlRequestId": "uuid-of-crawl-request",
"format": "json"
}
- 手続き::
- クローリングタスクのIDを取得する(APIまたはタスクリストで確認)。
- APIを使用して、出力形式(JSONやMarkdownなど)を指定してダウンロードリクエストを送信します。
- ダウンロードされたファイルはMinIOに保存され、MinIOコンソールにアクセスすることで利用できる。
リアルタイム・モニタリング
WaterCrawlはCeleryを使ってタスクのステータス監視を提供する。ユーザーはAPIを通してタスクの進捗状況を問い合わせることができる:
curl https://app.watercrawl.dev/api/tasks/<task_id>
返されるタスクのステータスには、「進行中」「完了」「失敗」などがあり、ユーザーがクロールの進捗状況をリアルタイムで把握できるようになっている。
プラグイン開発
WaterCrawlは、開発者が提供されたPythonプラグインフレームワークに基づいてカスタム機能を作成することを可能にするプラグイン拡張機能をサポートしています:
- 取り付け
watercrawl-plugin
パッケージ:pip install watercrawl-plugin
- 提供されている抽象クラスやインターフェースを使用してプラグインを開発し、クローリングロジックやデータ処理プロセスを定義します。
- WaterCrawlメインアプリケーションにプラグインを統合し、カスタムタスクを実行します。
ほら
- 本番環境に導入する場合は、必ず
.env
データベースとMinIOのコンフィギュレーションをファイルに入れておかないと、ファイルのアップロードやダウンロードに失敗する可能性がある。 - GitHub でのセキュリティに関するオープンなディスカッションは避けてください。
support@watercrawl.dev
. - WaterCrawlのGitHubリポジトリを定期的にチェックし、最新のアップデートや修正を確認することをお勧めします。
アプリケーションシナリオ
- 大型モデルのデータ準備
開発者は、大規模な言語モデルのために高品質のトレーニングデータを提供する必要があります。 WaterCrawlは、対象のウェブサイトからテキストコンテンツを素早くクロールし、余計なデータをクリーニングし、モデルのトレーニングに直接使用するのに適した構造化されたJSONまたはMarkdownファイルを出力することができます。 - 市場調査
WaterCrawlは、対象となるウェブページを一括してクロールし、主要な情報(製品説明、価格、ニュースなど)を抽出することで、企業が市場データを迅速に集約できるよう支援します。 - コンテンツ・アグリゲーション
ニュースやブログプラットフォームは、複数のウェブサイトから記事を収集する必要がある。 WaterCrawlは、記事のタイトル、本文、リンクを自動的に抽出し、統一されたフォーマットのコンテンツライブラリを生成するカスタムクロールルールをサポートしている。 - SEO最適化
SEOの専門家はWaterCrawlを使ってサイトマップやページリンクをクロールし、ウェブサイトの構造やコンテンツの分布を分析し、検索エンジンのランキングを最適化することができる。
品質保証
- WaterCrawlはどのプログラミング言語SDKをサポートしていますか?
WaterCrawlは、幅広い開発シナリオをカバーするNode.js、Go、PHP、Python用のSDKを提供しています。各SDKは、簡単な統合のための完全なAPI機能をサポートしています。 - クロールに失敗した場合、どのように対処すればよいですか?
タスクのステータスをチェックし、タイムアウトやネットワークの問題で失敗していないことを確認する。調整timeout
パラメータを変更するか、対象サイトのクロール防止メカニズムを確認してください。必要に応じてsupport@watercrawl.dev
. - 技術者以外のユーザーもサポートされているか?
WaterCrawlは主に開発者を対象としており、PythonまたはDockerの基本的な知識が必要です。技術者でないユーザーがデプロイして使用するには、技術チームからの支援が必要かもしれない。 - WaterCrawlの機能を拡張するには?
利用するwatercrawl-plugin
このパッケージは、特定のクローリングやデータ処理ロジックを定義するカスタムプラグインを開発し、メインアプリケーションに統合して実行します。