毎日定時にWebサイトから数値を取得して自HPに更新するやつ #2

- なんなん -

てとらぽです、#1 の続きをかきます(以下敬省)。

前置きなしで前の続きを語りだすことが予想されるため本記事の前に#1を読んでくれ。

tetl4pot.hatenablog.com

 

- やること -

やっていくぞ、目次

1. WebスクレイピングCSV記述

2. CSV読んでHTML上に動的Table表示

3. サーバPCの環境整備とGitとか

4. 今後の課題

の3と4

- 3. サーバPCの環境整備 -

プログラムを動かすのにメインPCつけっぱなしというわけにもいかないのでサーバ用にRaspberry Piを購入した。電源つけっぱなしで年間だいたい3000円ぐらいとのこと。

 当然、初回起動即実行解散!!なんてそううまくはいかないためUbuntuでかいたプログラムが正常に動作する環境を整える、といった話。

ボード: Raspberry Pi 3 Model B+

OS: Raspbian 4.14

RaspbianにはPython 2.7.13と 3.5.3 が標準でインストールされているのだがまあ3.6以上でないとお話にならないためインストールする。あと、requests-htmlいれるためにpipもアップグレード。

あと、ライブラリ内のpyppeteerによりChromeの実行ファイルがダウンロードされるが、ラズパイで動かすことができないためRaspbian付属のChromiumを使うように変更かける。

$ git clone https://github.com/kennethreitz/requests-html cd requests-html

$ sed -i -e "s@headless=True, args=self.__browser_args@headless=True, executablePath='/usr/bin/chromium-browser', args=self.__browser_args@" requests_html.py

$ pip install -e . -user

以上、ラズパイ上で1のプログラムを動かすことができる。

- Git周り -

ここまでで定時でスクレイピング、同階層のCSVファイルを読んでHTMLに書き出すプログラムとそれを動かす環境が整ったのでそれらすべてつなげていく作業。

ホスティングにはGitHub Pagesを使っており(大問題)、同リポジトリ内にindex.html, pyqueryのプラグイン.js, ランク推移.csv, getRank.pyがある状態。

f:id:tetl4pot:20190115025023p:plain

図形矢印伸ばしてつくるのは挫折した

ラズパイにリポジトリをクローン、getRank.py実行毎にcommit&pushしていく感じだ。具体的にはwhile文の最後に以下の記述を加える。

#実行したいコマンド1

cmd_commit = "git commit -a -m update_CSV"

#Python上で外部コマンドを実行

subprocess.call(cmd_commit.split())

#実行したいコマンド2

cmd_push = "git push origin master"

subprocess.call(cmd_push.split())

ちなみにHTTP/HTTPS通信だとお名前を聞かれて入力待ちになってしまうためSSHにしておく。

以上、

毎日定時にWebサイトから数値を取得して自HPに更新するやつ

ができる。やった!!

 - 4.今後の課題 -

現状での問題点を優先度をつけて列挙していく。カンゼンにFORMEな内容になるため読まなくてよいかも。

1. ホスティングサービスにGitHub Pages を使用している

2. getRank.pyにターミナルを占領されている

3. Webページのレイアウトがゴミ

どれもかなり致命的ではあるが1に関してはヤバ最悪で、ソースコードとデータファイルが同席しているためGitって何という感じになっている。

Gitは、プログラムのソースコードなどの変更履歴を記録・追跡するための分散型バージョン管理システムである。(Wikipedia)

テスト運用でスクレイピング間隔を1分に設定していたことがあったが。一日当たり60*24 contribution を生やす控えめに言って最悪の構造でして...

2に関してはcrontabで実行するように設定してやれば解決するような気もするが、前日比のとり方を見直す必要がある。

3はわりとどうでもいいと思っているため当分放置になるかと、なんかCSVではなくJSONに記録すればラクーにグラフを作成してくれるプラグインがあるらしいがまあまた今度。

 

- 参考 -

覚えているハンイでお世話になったサイト載せておく、全然覚えていないが。

qiita.com

blog.mudatobunka.org

qiita.com

- おわりに -

osu!をやっていこうな。