概要/理由
・ Pythonで自分の大学の課題サイトをスクレイピングをして、未開始の課題を収集しLineに通知させることをしました。
・理由:最近、スクレイピングにハマり、これを自分の日常に役立つものに生かしたいなと考えた。大学の課題が多すぎて、提出し忘れることがあるのでやっていない課題を知らせてくれると便利だなと考え作ってみた。
・ソースコードはこちら
全体の流れ
- Dockerで環境構築
- スクレイピングコードをかく
- Line NotifyでLineに通知
- AWS Lambdaにデプロイし定期実行させる
使ったもの・ライブラリー等
- Python のライブラリー
- selenium
- Beautifulsoup4
- requests
- その他
- Docker
- python3.6
- Line notify
- AWS Lambda
詳細な流れ
①環境構築
Dockerで環境構築するのだが、Lamdaにデプロイすることを考え、serverless-chromeを使った。
環境構築はこちらが参考になった。
Dockerに
・severless-chrome
・chromedriver
requirements.txtに
・selenium
・Beautifulsoup4
・requests
を書いていく。
そしてDockerイメージを作成
②スクレイピングコードをかく
大まかな流れは、
seleniumでログイン→課題ページのURLを取得
その後、課題ページの一覧から「期限が来てない&未開始になっている」課題を収集
③Line Notify
Line Notifyの使い方はこちらの記事を参考にしました。
登録して、数行コードを書くだけなので簡単です。
④AWS Lambdaにデプロイ&定期実行
大まかな流れはこちらをそのまま使わせていただきました。
・コードのフォルダーをS3にアップロード
・Lambda関数の作成
・環境変数を設定する。
・テストを作成し、Lineに通知されることを確認。
・LambdaからトリガーにAmazon CloudWatch Eventsを追加させ、定期実行させる。完成!課題多ない・・・
感想・今後に・・・
・思っていたよりLineやAWSとの連携が簡単だったので今後も使っていきたいですね。
・PDFのダウンロードの自動化にも挑戦したい!