【データの集め方講座】日経平均株価を自動取得し Windowsデスクトップ通知でリマインド
はじめに
ごあいさつ
ご高覧いただきありがとうございます.
ソフトウェアエンジニアのKitaharaです.
本日はPythonを使った日経平均株価の収集方法を解説します!
今回はBeautiful Soupでスクレイピングをしたのちに, Windowsのデスクトップ通知とcsvファイルに保存を自動的に行うプログラムを作成します.
==================================================
デスクトップ通知はリマインドに最適なツール
Windowsにはアプリケーションなどから自動で通知を受け取るデスクトップ通知が存在します.
このデスクトップ通知ですが, 実はPlyerというライブラリを使うと簡単にPythonのプログラムで出力させることができます.
デスクトップ通知の良いところはリマインド効果が高いことです.
PCあるあるですが, メール通知やライン通知にしていた場合, Windowsを使っていると見落としてしまうことがあります.
ですが, デスクトップ通知は画面が動き, 見るまでの動作が目線を動かすだけなので, 他の方法に比べるとリマインド効果が高いといえます.
使用例としてはタスクスケジューラなどで定期実行するプログラムの結果の表示などがあげられます. 今回はこのデスクトップ通知を使って日経平均株価をリマインドできないか検討してみました.
==================================================
日経平均株価とは何か・取得するメリット
日経平均株価の定義については三井住友銀行さんがわかりやすく解説していたので引用させていただきます.
上記のように日経平均株価は日本の株式市場の動向を把握するのに用いられる指標です. 例えば, 「株式市場全体でみて上昇傾向にあるのか下降傾向にあるのか」といった分析ができたりします.
また, 投資家にとって重要な指標ですので,日経平均に大きな動きやトレンドがあればニュースになったりします. 2021年秋に日経平均株価が上昇を続け, 3万円を超えたときは大きく取り上げられました.
さて, この日経平均株価を取得するメリットは何でしょうか?
いくつかあると思いますが, 以下のようなものがあると考えられます.
日本市場の傾向を把握できる
「日経の値段が上昇したから全体的に伸びてそうだ」
「ここ数か月は日経が低迷しているから全体的に株価は下落傾向にありそうだ」
投資判断に役立てることができる(と言われている)
「全体的に上昇しているから買いで進めよう」
「全体的に落ち込んでいる日だから陽線は伸びにくそうだ」
株式市場はその日の最初から数分間~数十分間は動きが大きいことがあります. この時間帯は日経の情報を通知しておくと調べる手間を省けるメリットが大きそうです.
作るものの説明
寄り付きから日経平均株価の通知をするプログラムを作成します. プログラムは自動で日経平均株価を収集し, 保存したうえで, 下記のような通知を出します.
使用するものの説明
Python
プログラミング言語のひとつで型宣言等が無く, 初心者にも扱いやすい言語だと言われています. 近年Deep Learningのライブラリが豊富であることから注目を集めている人気の言語です.
Beautiful Soup
HTMLやXMLからデータを取り出すPythonのライブラリです.
seleniumと違いpip installをするだけで使うことができるのでローカルであっても環境構築が楽です.
Plyer
Windowsの通知をするために使います.
このライブラリを使うことで1回の処理でwindowsの通知をすることが可能になります. 便利!
タスクスケジューラ
Windows PCのタスク設定できるGUIのアプリケーションです.
このアプリケーションにプログラムの実行を命令するタスクを設定することで定期実行を実現します.
環境構築
ファイルの作成
今回はプロジェクトのディレクトリの下に app.py と news.ico を作成します.
news.ico ファイルは128*128pxまでであれば任意のファイルを使用できます.
私が作成したファイルは以下のものです.
ライブラリのインストール
Pythonのデフォルトにない関数を使うのでライブラリをインストールします.
pip install plyer
pip install beautifulsoup4
プログラムの作成
コード概要
INPUT (app.py)
import requests
from bs4 import BeautifulSoup
from plyer import notification
import csv
# HTMLを取得
res = requests.get('https://nikkei225jp.com/chart/')
# HTMLをperseする(これをしないと個別の値を取り出せない)
soup = BeautifulSoup(res.text, 'html.parser')
selector = '#if_con22 > div.if_box2 > div.if_cur'
# CSS Selectorを使えば大体なんでも取得できる
# リストには日経平均株価・ダウ平均株価・為替ドル円が入っている
data = [n.get_text() for n in soup.select(selector)]
data = [value.replace(',','') for value in data]
print(data)
message = 'price: ' + data[0]# + ' dow: ' + data[1] + ' $/yen: ' + data[2]
notification.notify(
title = 'nikkei225',
message = message,
app_name = 'Nikkei Bot',
app_icon = './news.ico'
)
with open('nikkei_dow_dolleryen.csv', 'w', newline='') as f:
writer = csv.writer(f)
writer.writerow(data)
INPUT (cmd)
C:\Notification_Program> python app.py
OUTPUT (cmd)
# その日によって出力は異なります.
['price of nikkei', 'price of dow', 'price of doller/yen']
OUTPUT (Windows Desktop)
==================================================
コードの解説
# HTMLを取得
res = requests.get('https://nikkei225jp.com/chart/')
# HTMLをperseする(これをしないと個別の値を取り出せない)
soup = BeautifulSoup(res.text, 'html.parser')
selector = '#if_con22 > div.if_box2 > div.if_cur'
# CSS Selectorを使えば大体なんでも取得できる
# リストには日経平均株価・ダウ平均株価・為替ドル円が入っている
data = [n.get_text() for n in soup.select(selector)]
data = [value.replace(',','') for value in data]
print(data)
リクエストライブラリで取得したデータをHTMLにparseします.
このようにすることでCSS selector などによってほしい情報を取得できるようになります.
今回はCSS selectorって情報を取得します.
CSS selectorを使う理由は使いやすいからです. CSSをある程度知っていれば, 使いこなすことができます.
message = 'price: ' + data[0]# + ' dow: ' + data[1] + ' $/yen: ' + data[2]
notification.notify(
title = 'nikkei225',
message = message,
app_name = 'Nikkei Bot',
app_icon = './news.ico'
)
次にメッセージを設定して通知のオブジェクトを作成します.
notifyメソッドを使うだけでいいのは便利ですね.
with open('nikkei_dow_dolleryen.csv', 'w', newline='') as f:
writer = csv.writer(f)
writer.writerow(data)
最後にデータを書き込みします.
上記の書き方は独特ですが, 頻出の文法ではないので調べて覚える必要まではありません.
==================================================
タスクスケジューラの設定
windowsのタスクメニューを開き, 虫眼鏡のアイコンを押してください.
すると次の写真のような大き目のモーダルが開きます.
taskと入れると「タスクマネージャー」と「タスクスケジューラ」が表示されます. タスクスケジューラを選択します.
タスクスケジューラを開くと以下のような画面になるので, 右側のカラムのタスクの作成ボタンを押してください.
タスクには名前を付ける必要があるので名前を付けます.
今回は寄り付きデータの収集にしました.
実行する命令とファイルのパスの設定をします.
プログラムとスクリプトにはPythonの存在する場所を入れます.
開始オプションはファイルの存在するディレクトリまでのパスを入れます. 私はCドライブ直下のNotification_Programに作成したので, C:\Notification_Programと入れました.
引数には作成したファイル名を入れます. 私はapp.pyにしました.
その他の設定はしなくて問題ありません.
全て出来たらタスクの作成をして下さい.
タスクスケジューラのホーム画面に戻ったら, タスクが実行できるかテストします. 左側のカラムのタスク スケジューラ ライブラリを押してみてください.
実行するとタスクのデータを見ることができます.
自分が作成したタスクがあるか探してみましょう.
タスクを右クリックすると以下のポップアップが出現します.
実行ボタンを押して動くか試してください.
実行を確認出来たら先ほどのポップアップのプロパティを押してトリガーを編集します. テストも兼ねて一回だけ9:00から5分おきに起動するようにしてみました. これで動けば完成です.
おわりに
今回はPythonを使って日経平均株価のデータの自動収集とリマインダーを行うプログラムを作成しました! 参考になったという方はぜひハートボタンを押していってください!
モチベーションが上がります!
記事内で不明な点等ございましたら気軽にご連絡ください.
Twitter: @kitahara_dev
email: kitahara.main1@gmail.com
参考文献
この記事が気に入ったらサポートをしてみませんか?