勉強しながらだったので、ブログしばらく停止してました。
先日まで使用していたwebクラウドのherokuが、全面有料化となったため解約せざるを得なくなった。そのためherokuに設置していたLineへの「お悔み情報」の定時送信がSTOPしていた。
その筋で有名なGitHubでも定時送信機能が追加されていたことを知ったため、Pythonプログラムの更新とGitHubへのデポジットを試してみることにした。
もちろん、無料が最低条件!!!
Pythonでのプログラム作成
Googleさんにお願いして、基礎、入門 を見つけて、目的に合う情報を集めた。前提条件としてPython環境の構築がされていること。または、GoogleColabによる実行。私はすでにAnacondaにてPython3.8で仮想環境を構築済みなので、このまま作業を進める。
以前作ったPythonフォルダを見たが、完成版がどれなのか(原因不明のエラーだらけ)記憶に無いし、GitHub(無料枠)で使用するための使用容量制限などあるため、外部ライブラリ更新やモジュールの軽量化を図るため、コードも最初から書くことにした。
多分、
—スクレイピングではサイト運営者に、ご迷惑をおかけしない様 requests で「お悔み情報」サイトにアクセスし、短時間で情報を頂戴して瞬時に切断。続いてbeautifulsoup4で欲しい部分を取得し、LineAPI(Notify)を使って自分宛にLine messageを送信する。出来上がったpythonファイルをGitHubにデポジットしておき、毎日定時に実行させる。—
で良かったと思う。
お悔み情報をスクレイピング
- guruttoへ接続 urlを設定しておく
- requestでwebを開く
- responceで情報をごそっと受け取る
- requestでwebを閉じる
- 受け取った情報を必要な部分だけ取得して、message に代入しておく
messageをprintするとお悔み情報が表示されるので、このmessageを自分宛にLineでうまく送信できればとりあえずOK。
webサーバーmのHTMLが一括でtext形式になって<br>で区切られていいるだけなので一括取得は簡単だった。でも項目を分けて取得しなければならない場合は面倒そうだ。
このスクレーピング部分は単独で改良できるように、関数化(def)しておく。
LineAPIトークン発行と、LineNotifyの関連付け
LineNotify画面から自分のLINEアカウントでログインし、自分の情報を登録すると登録した携帯へSMS認証4桁数字が届くので、LineNotifyへ数字入力し、トークンを発行。
このトークンは忘れずに、メモ帳などに保管。1回しか表示しないので必ずここで保管!!! この後は自分宛に1:1で通知を関連付け名前を適当につける xxxx_xxxx 関連ドキュメントは、さらに下部にあるので、エンドポイントや使用方法も読んでおく。
PythonでLineNotifyへテスト送信
LineNotify[ドキュメントを読みながら、Googleさんに聞きながら、LineNotifyへPythonから何か」「メッセージを送るコードを作成。うまく届くまで試行錯誤の繰り返し、エラーがなくなるとメッセージが届く。
トークンは「LINE_NOTIFY_TOKEN」としてPythonと同じフォルダに置いておく。
自分のLineへNotifyからメッセージが届いた
何度か繰り返しコード作成し、Pythonコードを実行しメッセージの送信に成功した。
この後は、guruttoからスクレイピングした「お悔み情報」取得のコードと、LineNotifyでメッセージ送信を合体すれば良い。
LineNotify送信も関数化してメッセージ送信を確認する。
引数をmessageにしてLineNotify送信を関数化して送信テストをした。これがうまくいけば、あとはスクレイピングも関数化してmessageに代入すれば、組み合わせてうまくいきそうだ。
送信成功!!
スクレイピング部とLINE送信部をPythonファイルに書き下ろす
上記で作成した2つの関数を1つにまとめて、Pythonファイルにまとめた。
エディタはテキスト書ければなんでも良いが、以前使っていたVisualStudioCodeを使用した。これもしばらく使用していなかったので、最新版にアップデートが必要でした。
実行 python3 main.py ⏎
成功!!
GitHub設定
以前自作プログラムファイル貯蔵庫として使っていたので、アカウントはあったが画面がかなり変わっていた。うーうん
とりあえず、Googleさんにお聞きしながらです。Repogitoryで名前を付けて作成し、そこにLocalとremoteを接続してと、 masuter にファイル2つ(Token,main.py)をデポジットして動かすにはmain.ymlを作成。
yml??
pipで外部ライブラリーをinstallしてと…
トリガーはUTC(世界標準時間)でーっと。。。
実行環境はUbuntuで良かったよね、、、
セット完了!!明日の午前11時30分に起動して、10分後くらいにLINEに来るか!!
成功!
無事 受信できた!
でも、LINE受信できたのは、12:01? 11:30の設定ですが、無料版では多少の遅れが出る様です。 。。。んまいいか。
GitHub作成時、最長 3ヶ月になっていたので、3ヶ月後突然受信できなくなるかも?
無料は、やっぱり制限多いですー
今度、このブログ作っているサーバーに、Python環境を構築して、そこで時間指定で起動できるか調べてみます。
可能かどうかわかんないけど。。。
以上でこのテーマは終了といたします。m(_ _)m