クローラー開発

URLを一つ指定すると、同一ドメイン内をクローリングして、指定の条件に合う情報を全て抽出するようなクローラーを開発する。
pythonで作る場合、どのライブラリがベストか、gpt-4oに聞いた結果をまとめたものが以下。
ということで、playwright
というのを使うことにする。
✅ クローラー開発に最適なライブラリの結論:Playwright
🎯 要件
- 新規開発のシステム
- JavaScriptを含む、あらゆるWebサイトに対応
- できるだけ確実に・安定してクローリング
✅ 結論:Playwrightがベストチョイス
🔹 主な理由
-
JavaScript対応が非常に強力
- SPAや無限スクロール、動的ページにも対応
- iframeやshadow DOMも扱いやすい
-
自動待機で安定性が高い
- 要素の表示完了まで自動で待機 → タイミングズレによるエラーが少ない
-
複数のブラウザエンジンに対応
- Chromium(Chrome)、Firefox、WebKit(Safari)対応
-
開発しやすさ
- スクリーンショット/動画撮影、GUIでのデバッグが標準機能
- 並列処理・非同期処理も対応
-
将来的な拡張性
- Python以外にもNode.js、Javaなどに対応
🔽 他ライブラリとの比較
ライブラリ | JS対応 | 安定性 | 学習コスト | 特徴 |
---|---|---|---|---|
Playwright | ◎ | ◎ | △ | モダン、高性能、自動待機 |
Selenium | ○ | △ | ○ | 歴史あり、既存資産多い |
requests + BeautifulSoup | ❌ | ◎(静的のみ) | ◎ | 軽量、学習しやすい |
Scrapy | △ | ◎ | △ | 静的サイト&大量データ向け |
🏁 結論まとめ
「あらゆるWebサイトを確実にクローリングしたい」
→ Playwright が最も信頼できる選択肢。

クローラーの動作環境について
結論、安定動作を考えると実行ファイルを作ることか??
Google ColabとかCloud Runもいいけど、どちらもブラウザを開きっぱなしにしないといけない。
Cloud Functionsならその必要はないか。それをトリガーするのがベストか?
o1の回答:
💡 Pythonスクリプトを簡単に実行できる環境ベスト3(費用最小・操作簡単)
✅ 要件
• 数十分かかるPythonスクリプトを実行したい
• 顧客はPythonに詳しくない
• 操作は「1〜2ステップ」で完結させたい
• 費用はゼロまたは最小限に抑えたい
• 常時稼働の必要はない
⸻
🥇 1. Google Colab(無料・簡単)
• 概要: Googleが提供するクラウド上のPython実行環境。ブラウザだけで利用可。
• 操作:
1. 顧客にColabのURLを送る
2. 「ランタイム → すべてのセルを実行」をクリック
• メリット:
• 無料で使える
• インストール不要
• GPU/TPUも使える
• デメリット:
• セッション制限(最大12時間)
• Googleアカウントが必要
• おすすめ度: ⭐⭐⭐⭐⭐(無料・手軽・短時間処理なら最強)
⸻
🥈 2. PythonAnywhere(無料プランあり・Web上で実行)
• 概要: WebブラウザからPythonスクリプトを実行できるクラウドサービス
• 操作:
1. 顧客がログインし、「スクリプト名.py」をクリック
• メリット:
• ブラウザ完結で操作簡単
• 無料枠でも動作可能(CPU時間に制限あり)
• デメリット:
• 無料枠に制限あり(CPU時間・実行時間)
• UIが英語(多少説明が必要)
• おすすめ度: ⭐⭐⭐⭐(無料でも実用的・GUIで実行しやすい)
⸻
🥉 3. ローカル実行ファイル(.exe)化して配布
• 概要: PyInstallerなどでPythonスクリプトを実行ファイル化し、顧客PCでダブルクリックで実行
• 操作:
1. 顧客に .exe ファイルを送る
2. 顧客がファイルをダブルクリック
• メリット:
• 完全に費用ゼロ(PC上で実行)
• ネット接続不要
• 操作がシンプル(ワンクリック)
• デメリット:
• セキュリティ警告が出ることがある
• OSごとにビルドが必要
• おすすめ度: ⭐⭐⭐(シンプル・費用ゼロ・配布にひと工夫)
⸻
🎯 結論とおすすめの進め方
使用頻度 実行時間 おすすめ環境
たまに/短時間(数十分) 無料で済ませたい Google Colab or PythonAnywhere
顧客PCのスペック十分 オフラインでも使いたい ローカルexe配布
o3-mini-highの回答:
- Google Cloud Run
• 概要:
DockerコンテナとしてPythonスクリプト(あるいはWebアプリ+バックグラウンドジョブ)をパッケージ化し、Cloud Run上にデプロイします。Cloud Runはリクエストがないときは自動でスケールダウンするため、常時稼働していない状態で費用が発生しにくい仕組みです。
• メリット:
• 無料枠があり、たまに使う用途なら実質ゼロに近いコスト
• 最大60分程度のリクエストタイムアウトが設定可能(数十分の処理に対応可能)
• オートスケール・オンデマンド実行のため、常時稼働しなくて済む
• デメリット:
• Docker化や初期のコンテナ作成の知識が必要(初回設定のみですが)
• シンプルなボタン操作のWeb UIはFlaskやFastAPIなどで実装する必要がある
⸻
- Streamlit Community Cloud
• 概要:
Python専用のシンプルなWebアプリケーションフレームワークであるStreamlitを使い、スクリプトを実行するためのシンプルなUI(「実行開始」ボタンなど)を構築し、Community Cloudでホストします。
• メリット:
• Pythonコードのみで簡単にUIが構築でき、非エンジニアの顧客にも直感的な操作が可能
• 無料でホスト可能(たまに使う用途に適している)
• デメリット:
• 無料プランのリソースやセッションタイムアウトの制限により、非常に長い処理の場合は工夫が必要な場合がある
• バックグラウンドでの実行(処理の進捗表示など)を実装するためには、非同期処理の仕組みを組み込む必要がある場合も
⸻
- Replit
• 概要:
ブラウザ上で動作するIDE兼ホスティングサービスのReplitでは、簡単なWebアプリ(例:FlaskやFastAPI)を構築し、ボタン操作でスクリプトを実行する環境を構築できます。
• メリット:
• 開発からデプロイまで一体となっており、設定がシンプル
• 無料プランが存在し、たまに使う用途には十分対応可能
• 顧客にはURLを知らせるだけでシンプルなUIを提供できる
• デメリット:
• 長時間の処理の場合、無料プランでのリソースや実行時間の制限に注意が必要
• パフォーマンス面や信頼性は専用のクラウドサービス(例:Cloud Run)に比べると劣る可能性がある
⸻
結論
たとえば、Google Cloud Runはコンテナ化のハードルはあるものの、実行時間や費用面の柔軟性が高く、オンデマンドで数十分の処理を実行するのに最適です。一方、Streamlit Community CloudやReplitは開発・UI構築が非常にシンプルなため、顧客にとって直感的な操作が可能ですが、実行時間の制限やリソース面での注意が必要です。
それぞれのサービスの特性を踏まえて、システム全体の要件(処理の安定性、初期開発のハードル、実行頻度など)に最もマッチするものを選択するのがベストでしょう。

Google colabの無料版の場合、
公式情報としては、
コードは、各アカウント専用の仮想マシンで実行されます。一定時間アイドル状態にある仮想マシンは削除されます。また、仮想マシンには、Colab のサービスで定められた最大存続時間があります。
非公式情報としては、
90分操作がないとセッションが切断される
実行中に別タブに移っても一時的であれば大丈夫だが、「一定時間アイドル状態にある」の判定基準が書かれていないから保証はできない。