Lambdaでスクレイピングを定期実行して波情報をLINEで通知する

engineering

最近Python3を使っているのでスクレイピングをしてみようと思い、波情報を取得してLINEに自動通知するまでを実装しました。

Lambda、CloudFrontで定期実行しています。

今回は実装までの簡単な流れと、ソースコードを紹介していきます。

スクレイピングで波情報を取得

まずは波情報サイトからBeautifulSoupで波情報を取得します。

簡単に説明すると、波情報サイトから翌日の波情報が記載されている箇所を抜き出してmessage変数に格納しています。

LINEに通知する

取得した波情報をLINEに通知します。

LINEにはLINE NotifyというWebアプリケーションから通知を飛ばすことができるサービスがあるのでこちらを使います。

使い方は簡単で、LINE Notifyで登録を済ませてアクセストークンを発行し、そちらを使って実装します。

以下がコードですが、たったの4行でLINEに通知を飛ばせます。

わかりにくい方はこちらを参考にしてください。

Lambda、CloudWatchで定期実行する

先ほどのコードを定期実行していきます。

今回は毎日21時に波情報を通知するようにしました。

Lambdaを使う際の注意点としては、

Lambdaが初めに呼び出すlambda_handlerをコード内に埋め込まなければいけません。

こんな感じです。

また、Lambdaでは環境変数を設定できるので、LINE TOKENなどの流出させたくない情報は環境変数として設定しましょう。

今回はmoduleもいくつかimportしているのでソースコード群を.zipに固めてアップロードしました。

デプロイパッケージが大きすぎると下記のように画面上では確認できませんが、デプロイはされていますので安心してください。

CloudWatchの設定

CloudWatchには先ほどのLambdaを午後21時に定期実行するよう登録しました。

サイドバーのログからログを確認できるので、実行できていない場合はこちらを確認してください。

LINE側の設定

これでLINEに自動で通知がされるようになりました。

LINE側ではroomの友達にLINE Notifyを追加してください。

最後に

後から気づいたのですが、平日に波が良い通知が来ると憂鬱です。。

もしよかったらご気軽に参加してください!連絡くれれば招待しますよ!

マサ

文系出身のWEBエンジニア
メインの開発言語はPHP
リモートワークで旅をすることが夢です。

マサをフォローする
engineering
マサをフォローする
サーフエンジニアチャンネル

コメント

%d人のブロガーが「いいね」をつけました。