Crawleeは、Node.js向けのWebスクレイピング・ブラウザ自動化ライブラリです。CheerioやJSDOMによるHTTPクロールと、PuppeteerやPlaywrightによるヘッドレスブラウザクロールを、同一インターフェースで扱えます。リクエストキューやデータセットなどの永続ストレージ、プロキシローテーション、セッション管理、自動スケーリングも標準搭載しています。
中核はpackages/basic-crawlerのBasicCrawlerで、これをCheerioCrawler・PuppeteerCrawler・PlaywrightCrawlerが拡張する構造です。RequestQueueにURLを積み、requestHandlerで各ページを処理し、enqueueLinksで新しいリンクを同じキューに追加していく仕組みです。@crawlee/coreがストレージ抽象化(MemoryStorageBackendなど、serviceLocatorで注入)を、@crawlee/http-clientやgot-scrapingがブラウザらしいTLSフィンガープリントとヘッダー生成を担当します。SessionPoolがプロキシ・セッションの割り当てと再試行判断を行い、AutoscaledPoolがCPU・メモリ負荷を見てconcurrencyを自動調整します。取得データはDataset.pushDataで./storage/datasets以下にJSONとして保存され、テストコード(test/batch-add-requests.test.tsなど)を見ると、リクエスト追加が1000件単位でチャンク化される挙動やsession.idの解決ロジックが実装として確認できます。
- STEP 01
npx crawlee create my-crawlerを実行すると、CheerioCrawlerかPlaywrightCrawlerなどのテンプレートを選ぶ対話式プロンプトが出て、選択後に依存パッケージが自動インストールされます。
- STEP 02
cd my-crawler && npm startで実行すると、コンソールにTitle of https\://... is '...'のようなログが流れ、クロール対象URLが次々処理される様子が見えます。
- STEP 03
実行が終わると、プロジェクト内に./storage/datasets/default/というフォルダが作られ、各ページの抽出結果がJSONファイル1件ずつ保存されています。
- STEP 04
./storage/request_queuesフォルダにも中身が残るため、同じコマンドを再実行すると未処理分から再開される挙動を確認できます。
- STEP 05
PlaywrightCrawlerを使う場合はheadless\: falseに変更すると、実際にChromiumウィンドウが立ち上がりページ遷移が目視できます。
- STEP 06
プロキシを使わない状態でも、got-scrapingによりブラウザらしいHTTPヘッダーが自動生成されている点は、リクエストログやネットワークキャプチャで確認可能です。
実行後は、./storage配下にクロール結果のJSONデータセットとリクエストキューの状態が残り、途中で止めても再実行で再開できる永続クロールパイプラインが手に入ります。npx crawlee createで作ったプロジェクトはそのままnpm startで動く最小構成のスクレイパーになっています。
PlaywrightCrawlerやPuppeteerCrawlerを使う場合、playwrightやpuppeteer本体は同梱されていないため、別途npm installが必要です。
basic-crawlerパッケージのengines指定はnode>=22.0.0のため、READMEにある「Node.js 16以上」という表記より実際は要求バージョンが高い可能性があります。
テストコードのdocker関連スクリプト(test\:integration\:services\:up)を見ると、統合テストにはDockerでbrowserlessやhttpbinを立てる必要があり、フルテストの再現には追加インフラが要ります。
ドキュメント配下のコード例は多数のガイド(プロキシ管理・セッション管理・OpenTelemetryトレースなど)に分かれており、全機能を把握するには公式ドキュメントとの併読が実質必須です。
HTTPクロールとブラウザクロールを1つのAPIで切り替えたいNode.js/TypeScript開発者、特にAI・RAG向けのデータ収集やプロキシ・セッション管理を含む本格スクレイパーを組みたい人に向いています。README・package.json群・basic-crawlerの実ソースとテストコードから、キュー永続化・ストレージ抽象化・セッション再試行という主要な動作原理が裏付けられているため、インストールせずともこの判断は妥当と考えられます。ただし実際の要求Node.jsバージョンやブラウザ依存の別途インストールなど、細かな環境差は自分の手元でも確認したほうが安全です。