当ブログは、レンタルサーバー「ロリポップ」で動作しています。
契約しているプランによるのですが、Pythonを実行できることがわかりましたので、株価情報等を定期的にスクレイピングして、ある程度の暴落を検知したら、LINEに通知するプログラムを組んでみました。
SSH接続の有効化
ロリポップのユーザー専用ページにログインして、SSHを有効化します。
「サーバーの管理・設定」-「SSH」で、「SSHを有効にする」を押下します。
表示される、サーバー、アカウント、接続ポート、SSHパスワードをメモしておきます。
Pythonの実行準備
Pythonでimportするモジュールをあらかじめインストールしておきます。
まずは、pipを使えるようにします。
pipの導入
以下を実行します。
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py python3 get-pip.py --user
PATHを通す
viを使用して、.bash_profileにPATHを通します。
PATH=$PATH:/home/users/1/sub.jp-teto/.local/bin export PATH
PATHを有効化するために、SSHを接続しなおすか、以下を実行してください。
source .bash_profile
pipの動作確認
pipがうまく動作するか以下を実行。
リストが出てこれば成功です。
pip3 list
importするモジュールのインストール
自分のPythonで使用するモジュール(numpyなど)をインストールします。
ロリポップにTeraTerm等のターミナルソフトを使ってSSH接続します。
pip install numpy
定期実行
Pythonのプログラムを定期的に実行したいことがあります。
ロリポップではcronが10個まで使用できます。
まずは、定期実行したいPythonファイルをwebディレクトリ配下に格納します。
例えば、webディレクトリ配下にpythonディレクトリを作成し、ファイル名をhello.pyとします。
WinSCPなどのソフトを使ってもいいですし、TeraTermなどで作成してもよいと思います。
注意点は、ファイルのパーミッションを700にしてください。
ターミナルで実施するなら以下となります。
cd web mkdir python cd python vi hello.py chmod 700 hello.py
cronの設定
ロリポップのユーザー専用ページにログインしてcronの設定をします。
「サーバーの管理・設定」-「cron設定」
ここで、cronの設定名を適当に記載し、定期実行したい日にちや時間等を設定します。
実行ファイルパスに、先ほど作成したファイルパスを記載します。
python/hello.py
LINE Notify
LINEにつぶやくには、LINE Notifyを使用すればよいです。
参考URL https://www.smilevision.co.jp/blog/tsukatte01/
LINE Notifyで生成したトークンをhttps://notify-api.line.me/api/notifyにPOST送信してやれば、LINEでつぶやくことができます。
以下、サンプルプログラムです。
import urllib.request
import sys
LINE_TOKEN = "<生成したトークン>"
LINE_NOTIFY_URL = "https://notify-api.line.me/api/notify"
def line_notify(msg):
method = "POST"
headers = {"Authorization": "Bearer %s" % LINE_TOKEN}
payload = {"message": msg}
try:
payload = urllib.parse.urlencode(payload).encode("utf-8")
req = urllib.request.Request(
url=LINE_NOTIFY_URL,
data=payload,
method=method,
headers=headers)
urllib.request.urlopen(req)
except Exception as e:
print ("Exception Error: ", e)
sys.exit(1)
msg変数につぶやきたいメッセージを入れて、line_notify()関数を呼べば、LINEでつぶやいてくれます。
コメント