見出し画像

【Pythonコード】Webスクレイピングで高配当株 スクリーニング自動化ツールを作成してみた②

どうも、こじまるです。

今回は下記の記事の続編になります。

0.前回のおさらい

以前の記事で、スクリーニング済みの高配当株情報を含むExcelファイルをフォルダに配置できるようにしました。しかしながら、平日の特定の時間帯にツールが自動で動作する要件を満たせていないため、続編として対応を行いました。また、スマートフォンでも高配当株情報を見たいので、スマートフォンに情報を配信できる要件を追加しました。

要件定義
前回の記事で下記のようにスクリーニングツールの要件を定義しました。今回は要件1と新たに追加した要件3を満たすようにします。

スクリーニングツールの要件定義
要件1. 平日の特定の時間帯にツールが自動で動作すること。
要件2. 東証一部上場の株式情報を取得すること。
要件3. スマートフォンに高配当株情報を配信できるようにすること。(New)

システムの流れ
要件1、要件3を満たすために、下記のような流れで処理を実行させることにします。

画像1

システムの流れ
1. スクリーニングスクリプトの定期実行
2. スクリーニング結果のアップロード

1.スクリーニングスクリプトの定期実行

私はWindowsのパソコンとUbuntuのサーバを所有しています。Windowsのパソコンは常に起動しているわけではないため、今回はUbuntuのサーバを使って自動実行を行います。

Ubuntuの自動実行設定Ubuntuのタスクを自動実行するために、cronを使用します。下記コマンドを実行すると、Vimを起動します。

$crontab -e

平日の17:00に自動実行するように設定します。

$crontab -l
LANG=ja_JP.UTF-8
0 17 * * 1-6 cd /home/{user}/finance;/usr/bin/python3 /home/{user}/finance/createStockMap.py

cronの設定は下記を参考にしました。

2.スクリーニング結果のアップロード

Slack APIの設定
スマートフォンに高配当株情報を配信するために、Slack APIを使用します。詳細な手順については説明を割愛しますので、参考サイトをご確認ください。

設定手順
1. Slack APIより、アプリを作成
2. スコープにファイル書き込みのため files:write の設定
3. Slackにアプリをインストール
4. Tokenをコピー
5. Slackのチャンネルにアプリを追加

Slack APIの設定を行った後に、ソースコードを実行することでファイルをアップロードすることができました。

検証に使用したソースコードは下記になります。

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import requests

api_token = '' # please enter your api_token
channel = '' # please enter your channel

class SlackManager:
   def __init__(self):
       self.api_token = api_token
       self.channel = channel

   def upload_file(self,file,file_name):
       files = {'file':open(file,'rb')}
       param = {
           'token' : self.api_token,
           'channels' : self.channel,
           'filename' : file_name,
           'initial_comment' : 'file upload',
           'title' : 'dividend stocks'
       }
       res = requests.post(url="https://slack.com/api/files.upload",
           params=param,
           files=files)
       print(res.json())

if __name__ =='__main__':
   file_name = 'stock_210220_144325.xlsx'
   file_path = './' + file_name
   slack = SlackManager()
   slack.upload_file(file_path,file_name)

参考
https://qiita.com/yaju/items/2e1ab8a25b6e207bfbe6
https://www.whizz-tech.co.jp/5857/

スクリーニングツールの修正
前回作成したスクリーニングツールでは、1行(1つの銘柄)に20個の情報を表示しています。スマートフォンでは情報が多すぎると見づらいので、14個の情報を表示します。

ソースコード
ソースコードはこちらに配置しています。

結果

スマートフォンのSlackでファイルを受け取れることができました。

画像2


Excelアプリでファイルを表示した結果はこちらになります。1画面ですべての情報が表示できなかったため、2つの画像に分けています。

画像3

画像4

3.まとめ

スクリーニングした高配当株情報をスマートフォンに自動配信できるようになりました。情報の収集にSlackを使用してみましたが、結構便利なものですね。ソースコードも公開していますので、ぜひ使用してみてください。

この記事が気に入ったらサポートをしてみませんか?