spider-rs/spiderは、Rustで書かれたWebクローラー兼スクレイパーライブラリです。HTTP優先で動作し、JavaScriptが必要なページだけヘッドレスChromeを起動します。単一タスクから分散ワーカー群まで同じAPIでスケールし、マネージドサービスのSpider Cloudも同じエンジンを使います。
Website::new()でクローラーを作り、subscribe()でページのストリームを受け取ります。crawl()はreqwestまたはwreq経由でリンクを辿り、robots.txtの尊重・深さ・同時実行数・遅延などconfiguration.rsの設定に従います。chrome機能を有効にすると、features/chrome.rsがchromiumoxide経由でヘッドレスChromeを起動します。crawl_smart()はまずHTTPで取得し、JSが必要と判定されたページだけChromeへエスカレーションします。utils配下にはrate_limiter・backoff・bloomによる重複排除・robots_cache・dns_cache・WARC書き出しなど多数のユーティリティがあり、retry_strategy.rsとproxy_strategy.rsがネットワーク耐性を担います。ワークスペースはspider本体、spider_cli、spider_mcp、spider_agentなど複数クレートに分かれています。
- STEP 01
cargo add spiderで追加し、READMEのWebsite::newとsubscribeのコードを実行すると、ステータスコードとURLが付いたページが次々ストリームされます。
- STEP 02
cargo install spider_cliでCLIを入れると、examplesディレクトリの50件超のサンプルを参考にオプションを組み合わせて、コマンド一発でクロールできます。
- STEP 03
features = ["chrome"]を有効にしてcrawl_smart()を呼ぶと、HTTP取得後にJS判定されたページだけ別途Chromeが起動します。この場合ローカルにChromeバイナリが必要です。
- STEP 04
RUN_LIVE_TESTS=1 cargo testを実行すると、buildinghub_smart_cert_repro.rsのような実ネットワーク接続テストが走り、証明書エラー時のChromeフォールバック挙動を確認できます。
- STEP 05
Spider Cloudのspider_cloud機能とAPIキーを設定すると、同じWebsite構造体がプロキシ経由からステルススクレイプへ自動で切り替わるモードになります。
手元で動かすと、起点URLからリンクを辿りながら各ページのステータスコード・URL・HTML本文がストリームとして届く状態が得られます。exampleに応じて、Markdown・JSON・WARC形式でのエクスポートや、Chrome経由のスクリーンショット・Web自動操作の結果なども手に入ります。
Chrome機能を使う場合はローカルにヘッドレスChromeバイナリが別途必要で、READMEのコード例だけでは自動インストールされません。
Spider Cloudモードには有効なAPIキーが必要で、キーがなければローカルのHTTPとChromeの経路のみ動作します。
.cargo/audit.tomlには未修正のRUSTSECを無視する項目が多数あり、依存関係に既知の脆弱性が一部残っています。プロジェクト側は把握済みです。
ライブネットワークテストはRUN_LIVE_TESTS=1で実在サイトに接続するため、サイト側の変化や実行環境のネットワーク状況で結果がぶれる可能性があります。
Rustでクロールやスクレイピングを自前実装したいエンジニア、LLMやRAG向けにWebデータを集めたいチームに向いています。設定のデフォルトが充実し、HTTP優先で必要な時だけChromeを使う設計になっており、速度とコストのバランスが構造から読み取れます。コード・テスト・CIワークフローが揃っているため、実際に動かさなくても設計意図と挙動範囲は十分に判断できます。