今日の優良食堂
実際に入れて動かして書いた、今日の一膳
ギット飯が代わりに導入・実行・コードまで確かめました
今日の優良食堂 · ギット飯が代わりに導入・分析

apify/crawlee-python

Pythonで信頼性の高いウェブスクレイパーと自動化ツールを素早く構築できるライブラリです。

JavaScriptで描画される商品ページも、HTTPクロールと同じ書き方でそのまま取得できるのが実感できます。並列処理・再起動・プロキシローテーションを自分で組まなくても、途中で止まったクロールが状態復帰で再開する様子を、普通のPythonスクリプトの中で確認できます。型ヒントが効くのでIDEの補完を頼りに書き進められ、価格追跡や検索インデックス収集を今日の手元のプロジェクトでまず動かしてみたくなります。

01 / 概要
何をするものか一文で言うと
ひとことでPythonで信頼性の高いウェブスクレイパーと自動化ツールを素早く構築できるライブラリです。

Crawleeは、Python向けのウェブスクレイピングとブラウザ自動化ライブラリです。BeautifulSoup、Parsel、Playwrightなど複数の解析・実行バックエンドを共通インターフェースで扱え、リクエストキューやデータ保存、プロキシローテーションなど本番運用に必要な機能を一式内蔵しています。PyPIの`crawlee`パッケージとして配布され、CLIテンプレートからプロジェクトを素早く始められます。

02 / 構造
どう動くのか中核のしくみ
読み方動きの流れを図と一緒にほどきました。

中心にあるのは`BasicCrawler`を土台にした複数のクローラークラスです。`BeautifulSoupCrawler`と`ParselCrawler`はHTTPクライアント(既定は`ImpitHttpClient`)でページを取得し、HTMLをパースします。`PlaywrightCrawler`はブラウザを操作してJavaScript実行後のページを扱います。取得したURLは永続化された`RequestQueue`に積まれ、ハンドラー内で`enqueue_links`などを呼ぶと新規リンクが自動でキューに追加されます。結果は`Dataset`や`KeyValueStore`として`storage/`配下にファイル保存され、実行のたびに再開や重複排除ができます。並列度はCPUやメモリ使用状況(psutil)に応じて自動調整され、プロキシローテーションやセッション管理、robots.txt尊重、フィンガープリント生成などの機能もオプション拡張(`pyproject.toml`の`extras`)として用意されています。

03 / 体験
入れるとこんな体験になりますギット飯が実際にたどった順序
所要ギット飯が実際に導入・実行しながらたどった順序です。
  1. STEP 01

    `python -m pip install 'crawlee[all]'`を実行すると、コア機能に加えBeautifulSoup・Parsel・Playwrightなど全拡張がまとめてインストールされます。

  2. STEP 02

    `playwright install`を実行すると、ブラウザバイナリのダウンロードが始まり、数百MB規模のディスク消費と数分の待ち時間が発生します。

  3. STEP 03

    README記載の`BeautifulSoupCrawler`サンプルを実行すると、カレントディレクトリに`storage/`フォルダが自動生成され、`request_queues`と`datasets`のJSONファイルが確認できます。

  4. STEP 04

    `crawler.router.default_handler`にハンドラーを書いて`enqueue_links`を呼ぶと、同一サイト内のリンクを再帰的にたどり、`max_requests_per_crawl`で件数を止められる挙動が確認できます。

  5. STEP 05

    `uvx 'crawlee[cli]' create my-crawler`でCLIを試すと、cookiecutterベースの対話式プロンプトが起動し、クローラー種別やパッケージマネージャ(pip・poetry・uv)を選ぶテンプレートが生成されます。

04 / 成果物
何が手に入るのか導入後に手元に残るもの

実行すると`storage/`ディレクトリ配下に、クロール対象URLを管理する`request_queues`と、抽出データが入った`datasets`のJSONファイル群が手元に残ります。CLIテンプレートを使えば、Dockerfileや`pyproject.toml`を含む実行可能なプロジェクト一式がその場で生成されます。

05 / 注意
ここは先に知っておいてください先に知っておくとよいこと
正直なところ誰にでも合うとは言いにくいところです。
01

`PlaywrightCrawler`を使う場合は`playwright install`によるブラウザバイナリの追加取得が必須で、ディスクとネットワークのコストがかかります。

02

Python 3.10以上が必須のため、古い環境では動作しません。

03

`pyproject.toml`のoptional extraが`adaptive-crawler`・`pydantic-ai`・`sql_postgres`など多数に分かれており、必要な機能に応じて適切な拡張を選ぶ手間があります。

04

ボット対策の回避性能は対象サイトの防御実装に依存するため、README記載の「人間らしい」挙動が常に有効とは限りません。

06 / 結論
ギット飯の結論食べてみる価値のある一膳か
ギット飯の最終判断優良食堂

本番運用に耐えるPython製クローラーを自作したい開発者や、Scrapyから型ヒント付き・非同期ベースの構成へ移行したい開発者に向いています。README、`pyproject.toml`の依存構成、実際のソースコード(`_request.py`・`_cli.py`など)、豊富な`docs/guides/code_examples`から機能と挙動の裏付けが取れるため、インストールせずとも構成や動作イメージを判断できる材料は十分にそろっています。

今日の残りの一膳
SUBSCRIBER LIBRARY
これまでに検証した優良食堂を一堂に

4 つの関門を通った優良食堂がすべてバックナンバーに集まっています。いちばん新しい一膳はどなたでも無料で読め、それより前の優良食堂の検証の根拠・詳しい解説は ギット飯 プレミアムのご購読ですでに開いています。

優良食堂バックナンバー →
リポジトリ詳細🧪 ひと言で味見する