Open3

クローラー開発

宇野礼於宇野礼於

URLを一つ指定すると、同一ドメイン内をクローリングして、指定の条件に合う情報を全て抽出するようなクローラーを開発する。
pythonで作る場合、どのライブラリがベストか、gpt-4oに聞いた結果をまとめたものが以下。
ということで、playwrightというのを使うことにする。

✅ クローラー開発に最適なライブラリの結論:Playwright

🎯 要件

  • 新規開発のシステム
  • JavaScriptを含む、あらゆるWebサイトに対応
  • できるだけ確実に・安定してクローリング

✅ 結論:Playwrightがベストチョイス

🔹 主な理由

  1. JavaScript対応が非常に強力

    • SPAや無限スクロール、動的ページにも対応
    • iframeやshadow DOMも扱いやすい
  2. 自動待機で安定性が高い

    • 要素の表示完了まで自動で待機 → タイミングズレによるエラーが少ない
  3. 複数のブラウザエンジンに対応

    • Chromium(Chrome)、Firefox、WebKit(Safari)対応
  4. 開発しやすさ

    • スクリーンショット/動画撮影、GUIでのデバッグが標準機能
    • 並列処理・非同期処理も対応
  5. 将来的な拡張性

    • 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の回答:

  1. Google Cloud Run
    • 概要:
    DockerコンテナとしてPythonスクリプト(あるいはWebアプリ+バックグラウンドジョブ)をパッケージ化し、Cloud Run上にデプロイします。Cloud Runはリクエストがないときは自動でスケールダウンするため、常時稼働していない状態で費用が発生しにくい仕組みです。
    • メリット:
    • 無料枠があり、たまに使う用途なら実質ゼロに近いコスト
    • 最大60分程度のリクエストタイムアウトが設定可能(数十分の処理に対応可能)
    • オートスケール・オンデマンド実行のため、常時稼働しなくて済む
    • デメリット:
    • Docker化や初期のコンテナ作成の知識が必要(初回設定のみですが)
    • シンプルなボタン操作のWeb UIはFlaskやFastAPIなどで実装する必要がある

  1. Streamlit Community Cloud
    • 概要:
    Python専用のシンプルなWebアプリケーションフレームワークであるStreamlitを使い、スクリプトを実行するためのシンプルなUI(「実行開始」ボタンなど)を構築し、Community Cloudでホストします。
    • メリット:
    • Pythonコードのみで簡単にUIが構築でき、非エンジニアの顧客にも直感的な操作が可能
    • 無料でホスト可能(たまに使う用途に適している)
    • デメリット:
    • 無料プランのリソースやセッションタイムアウトの制限により、非常に長い処理の場合は工夫が必要な場合がある
    • バックグラウンドでの実行(処理の進捗表示など)を実装するためには、非同期処理の仕組みを組み込む必要がある場合も

  1. Replit
    • 概要:
    ブラウザ上で動作するIDE兼ホスティングサービスのReplitでは、簡単なWebアプリ(例:FlaskやFastAPI)を構築し、ボタン操作でスクリプトを実行する環境を構築できます。
    • メリット:
    • 開発からデプロイまで一体となっており、設定がシンプル
    • 無料プランが存在し、たまに使う用途には十分対応可能
    • 顧客にはURLを知らせるだけでシンプルなUIを提供できる
    • デメリット:
    • 長時間の処理の場合、無料プランでのリソースや実行時間の制限に注意が必要
    • パフォーマンス面や信頼性は専用のクラウドサービス(例:Cloud Run)に比べると劣る可能性がある

結論

たとえば、Google Cloud Runはコンテナ化のハードルはあるものの、実行時間や費用面の柔軟性が高く、オンデマンドで数十分の処理を実行するのに最適です。一方、Streamlit Community CloudやReplitは開発・UI構築が非常にシンプルなため、顧客にとって直感的な操作が可能ですが、実行時間の制限やリソース面での注意が必要です。

それぞれのサービスの特性を踏まえて、システム全体の要件(処理の安定性、初期開発のハードル、実行頻度など)に最もマッチするものを選択するのがベストでしょう。

宇野礼於宇野礼於

Google colabの無料版の場合、
公式情報としては、

コードは、各アカウント専用の仮想マシンで実行されます。一定時間アイドル状態にある仮想マシンは削除されます。また、仮想マシンには、Colab のサービスで定められた最大存続時間があります。

非公式情報としては、

90分操作がないとセッションが切断される

実行中に別タブに移っても一時的であれば大丈夫だが、「一定時間アイドル状態にある」の判定基準が書かれていないから保証はできない。