

Pythonでairbnbのサイトをスクレイピングしようとしています。  
PCを閉じていても定期的に動くようにしたいので、スクレイピングの処理をクラウド上で、できれば並列化して行いたいと考えております。（スクレイピング自体のコードはできています）  
おすすめの方法などありましたら教えて頂けると有難いです。


CC BY-SA 4.0
2019-04-17T05:46:12.793
54243
2021-05-17T14:06:20.580
2020-04-06T06:29:18.647
3060
21324
question
python web-scraping
Pythonのスクレイピングをクラウド上で（できれば並列化して）行いたい


クラウド環境という制約の元、簡単にまとめてみました。

# 仮想サーバ（VPS、EC2、GCEなど）内で定期実行する方法

  * cronを利用し、定期的にスクリプトを起動する 
    * cronとはジョブを定期的に実行するデーモンで、分単位で実行タイミングを指定することができます。
    * [cron - ArchWiki](https://wiki.archlinux.jp/index.php/Cron)
  * アプリケーションを常時起動しつつ、定期的に取得処理を動かす 
    * Pythonだとscheduleというライブラリが便利です。しかし、この方式の場合アプリケーションが予定外の終了をした場合の対応が必要です。
    * [schedule — schedule 0.4.0 documentation](https://schedule.readthedocs.io/en/stable/)

これらの方式は伝統的であり、ドキュメントも多いですが、サーバを常時起動するコストや、サーバ自体の監視・メンテナンスコストが発生します。

そこで、近年は以下の方式がより主流になりつつあります。

# FaaS系サービスを利用し、関数を定期実行してもらう方法

  * AWS LambdaやGoogle Cloud Functionsで関数を登録し、cronのように定期実行することができます。この場合、並列化したい関数（以下関数A）と、並列化したい関数を呼び出す関数（以下関数B）を登録しておいて、関数Bを定期実行し、そこから別途関数Aを呼び出すような形式になるかと存じます。 
    * [AWS Lambda (サーバーレスでコードを実行・自動管理) | AWS](https://aws.amazon.com/jp/lambda/)
    * [Cloud Functions - イベント駆動型のサーバーレス コンピューティング | Cloud Functions | Google Cloud](https://cloud.google.com/functions/?hl=ja)

ただし、こちらの方式はローカルにデータを保存出来ないため、データ保存先を別途用意する必要があります。また、FaaSの流儀に従ったコードを書く必要もあります（関数名や、実行時間に制限がある）。

どちらを選ぶかは要件に合わせて選択してください。


CC BY-SA 4.0
2019-04-17T08:05:41.327
54251
2019-04-17T08:31:05.633
2019-04-17T08:31:05.633
29826
29826
54243
answer