LoginSignup
8
1

More than 5 years have passed since last update.

GAE python3.7で定期スクレイピングしてpandasでデータ処理する婚活情報収集基盤を作りたかった

Last updated at Posted at 2018-12-23

これは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だけでやるのが良さそうかなと思います。

8
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
1