これはBrainPad Advent Calendar 2018 24日目の記事です。
今日はクリスマスイブですが皆さんはいかがお過ごしでしょうか?僕は虚無です。
なので婚活情報収集基盤を作ります。
GAEの話
2018年12月20日、こんなニュースがありました。
Python 3.7 for App Engine is now generally available
GAEでpython3.7がGAになったとのこと。
今までのGAE standardだとpython2.7が主流で、pandas, scipyなどはflexibleにしないと使えないという状態でした。
8月9日にベータ版が出てましたが、この辺がstandardでも使えるというのは良いニュースですね。
とはいえ実際どうなのか……その辺も試してみます。
作ったもの
woody-kawagoe/advent-calendar-2018
概要
- GAE python3.7で作成。
- 定期ジョブでスクレイピングを行う。
- スクレイピング先はオミカレの街コン情報。
- スクレイピングしたデータをCloud datastoreに格納。
- 申し訳程度にpandasでデータ処理できるか確認。
ページ
- app/
- datastore内のイベントデータを返す(最大100件)
- app/task
- スクレイピングを行うAPI
- ここをcronで叩く
- app/check
- 場所ごとのイベント数を返すAPI
- app/random
- ランダムでデータストア内のイベントを一個返す
- なぜかここだけhtmlを返す
所感
- スケジュール管理するcron.yamlと叩くAPIを同じプロジェクト内で表記できるのは楽
- datastoreの操作でまだndb使えないのは辛い
- GAE standardでpandas使えるのは楽
言い訳
この記事とかアプリを書き始めたのが12月22日なので勘弁してください。
ぶっちゃけ作ったのはカスみたいなwebアプリだけど応用範囲は色々あって、「定期的にデータ収集する」場合は今回みたいなGAE + datastoreの構成だと楽かなと思います。
余談
最近出たのにCloud Schedulerというサービスがあって、これがあれば時間トリガは使えそう。
というか次のチュートリアルがまんまそれ。
Using Cloud Scheduler and Pub/Sub to Trigger a Cloud Function
出来るだけ書くコード少なくしたいならCloud Scheduler + Pub/Sub + Cloud Function、
もうちょい色々やりたいならGAEだけでやるのが良さそうかなと思います。