PythonでWebスクレイピングと可視化テスト(2)

今回は簡単なWebスクレイピングをPythonで試してみます。前回のスクレイピングに続いて、今回はそのデータを可視化するコードを書いていきます。

目的

前回でYahoo!ファイナンスのページからドル円データを毎分スクレイピングして、csvファイルに保存するシステムを作りました。

# 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行目でコードを足しています。

matplotlib.use('Agg')
plt.savefig('/home/test/usd_plot.png')

としておくことで、usd_plot.pngとしてプロットデータを保存することができます。

cronによる自動化

上のプログラム今回は毎時実行させて、画像を更新させたいと思います。

このcrontabファイルを有効化します。

# crontab < usd_cron.tab

プロットデータの確認

先ほど保存したプロットデータを確認します。データは2018/6/10~2019/1/9間のものです。

参考のためにYahoo!ファイナンスのチャートも載せておきました。このサーバーを動かしていない時期もあったので、データを取得できていない部分もありますが、2018年末の下降なども取得、プロットできています。

まとめ

今回はpythonでWebスクレイピングからプロットデータを作成するまで、簡単な自動化のシステムを作ってみました。 データを保存しているcsvファイルが、取得開始から約6カ月経過現在、6GBになってしまいました。csvでも毎分取得は反省です。

コメント