某アイカツ!ランキングを取得して Mastodon に投げ込む

作るに至る経緯

一番くじ アイカツ! の発売が決まったようです。
楽しみですね。
上記サイトにもありますが、その商品内容を決めるべく人気投票がはじまりました。
とても気になりますね。

ただしスマホサイトのみでしか現在の順位が分からない仕様でいまいちアクセスが悪い。
また結構順位が入れ替わるようで定点観測もしたい。

前々からちょこちょことスクレイピングしてデータ取りたい欲求があり、Pythonによるクローラー&スクレイピング入門 などを買っておいたりしていましたので(結局あまり使いませんでしたが)、これはいよいよ動向を追うためにやるしかないと思い立ち、順位を定点観測するスクリプトを作成することにしました。

作っている間の雑感

最初に返ってくる HTML を見れば終わりかなと思っていましたが9位までしかなく、「もっと見る」をタップすると追加分を Ajax で取ってくるオシャレサイトでした。
しかし Ajax で返してくるデータがテーブルの HTML の一部なのであんまりオシャレでもなく。
ちなみに1ページ目としてリクエストすれば最初の9位までも同じ形で取れる事がわかったので、分かりやすくここから取ることにしました。

私自身は JavaScript を全然通ってこなかったので、Ajax で取ってくるプロセス周りは結構新鮮でいろいろハマりましたがなんとか完成しました。
Python はパーサにしろ Mastodon に投げ込むところにしろ優秀なパッケージが多く、簡単に作れてしまうので凄いですね。

その他の機能とか

あとから CSV データで保存する機能をつけ、これをグラフ化するものも作りました。
前述の通り JavaScript を書くのがほぼ初めてだったので、JSON での渡し方がこれで良いのかどうかも分かりませんが、なんとか形になりました。
見た目で分かるのは作っていて楽しいですね。

このグラフ のおかげで急上昇してきたとかが分かるようになったので楽しい、とても楽しいです。

これらのソースは GitHub で公開していますのでご参考まで。
tools ディレクトリ以下にグラフ化用の API と HTML が置いてあります。
API は uWSGI で動かしますので、Nginx などのウェブサーバで uWSGI の設定が別途必要です。

しかしランキング自体も目が離せませんね。
4月7日までの長丁場なので、じっくり見守っていきたいと思います。

Aikatsu!,develop,technical

Posted by yokky