今回は簡単なWebスクレイピングをPythonで試してみます。前回のスクレイピングに続いて、今回はそのデータを可視化するコードを書いていきます。
目的
前回でYahoo!ファイナンスのページからドル円データを毎分スクレイピングして、csvファイルに保存するシステムを作りました。
1 2 3 4 5 6 7 8 9 10 11 12 |
# head usd.csv year,month,day,hour,minute,usd, 2018,06,10,00,18,109.530000, 2018,06,10,00,19,109.530000, 2018,06,10,00,20,109.530000, 2018,06,10,00,21,109.530000, 2018,06,10,00,22,109.530000, 2018,06,10,00,23,109.530000, 2018,06,10,00,24,109.530000, 2018,06,10,00,25,109.530000, 2018,06,10,00,26,109.530000, |
これをプロットして可視化します。
実行環境
- CentOS 7
- Python 3.6.5
- pandas
- matplotlib
- JupyterLab
- ユーザー: test
- 作業ディレクトリ: /home/test/
データのプロット
スクリプト
以下にデータをプロットさせるコードをusd_plot_cron.pyとして書きました。
18行目以降がメインの関数です。今回は実行後、プロットデータをpngファイルとして保存するために、13行目と27行目でコードを足しています。
1 2 3 |
matplotlib.use('Agg') plt.savefig('/home/test/usd_plot.png') |
としておくことで、usd_plot.pngとしてプロットデータを保存することができます。
cronによる自動化
上のプログラム今回は毎時実行させて、画像を更新させたいと思います。
このcrontabファイルを有効化します。
1 2 |
# crontab < usd_cron.tab |
プロットデータの確認
先ほど保存したプロットデータを確認します。データは2018/6/10~2019/1/9間のものです。
参考のためにYahoo!ファイナンスのチャートも載せておきました。このサーバーを動かしていない時期もあったので、データを取得できていない部分もありますが、2018年末の下降なども取得、プロットできています。
まとめ
今回はpythonでWebスクレイピングからプロットデータを作成するまで、簡単な自動化のシステムを作ってみました。 データを保存しているcsvファイルが、取得開始から約6カ月経過現在、6GBになってしまいました。csvでも毎分取得は反省です。
コメント