PythonでWebサイト・キーワード監視ツールを作ってみた【個人開発】
はじめに
Pythonを使って、Webサイトやキーワードを監視するWindows向けデスクトップツール「WebMonitor」を個人開発しました。
Webサイトを定期的に確認し、ページの変化や指定したキーワードを検知すると、Discordやメールで通知するツールです。
今回は、個人開発でどのような機能を実装したのかを紹介します。
作ろうと思ったきっかけ
Webサイトの更新や商品の情報などを確認するとき、何度もブラウザを開いて確認するのは意外と手間がかかります。
そこで、
「指定したWebサイトを自動的に確認して、何か変化があったら知らせてくれれば便利なのでは?」
と考え、WebMonitorを作り始めました。
WebMonitorの構成
基本的な流れは以下のようになっています。
WebMonitor
↓
登録されたWebサイトを取得
↓
ページ内容を確認
↓
キーワード・変化を検出
↓
通知処理
↓
Discord / メール
監視対象を登録しておけば、設定した間隔で自動的にチェックします。
実装した主な機能
- Webサイト監視
登録したWebサイトを定期的に取得して監視します。
複数のサイトを登録できるようにし、サイトごとに監視条件を管理できるようにしました。
- キーワード監視
ページ内に指定したキーワードが存在するかをチェックします。
例えば、
再入荷
販売開始
予約開始
受付開始
など、ユーザーが気になる言葉を登録して監視できます。
キーワードを検出した場合は通知処理を実行します。
- Discord通知
監視結果をDiscord Webhookを利用して通知します。
監視対象に変化があった場合や、指定したキーワードが検出された場合に通知を送信できます。
- メール通知
Discordだけでなく、メールによる通知にも対応しています。
用途によって通知方法を選択できるようにしています。
- 複数サイトの管理
1つのWebサイトだけではなく、複数のサイトを登録してまとめて監視できます。
それぞれのサイトに異なるURLやキーワードを設定できるようにしています。
GUIについて
コマンドラインだけでは使いにくいため、Windows上で操作できるGUIを用意しました。
GUIから、
- 監視サイトの追加
- URLの設定
- キーワードの設定
- 通知方法の設定
- 監視間隔の設定
- 監視開始・停止
などを操作できるようにしています。
開発中に苦労したところ
単純にWebページを取得するだけなら比較的簡単ですが、実際に継続して動作するツールにするには、さまざまな処理が必要になります。
例えば、
- Webサイトに接続できなかった場合
- ページの読み込みに時間がかかった場合
- 通知に失敗した場合
- 複数サイトを監視する場合
- 設定を保存・読み込みする場合
などです。
そのため、正常なケースだけではなく、エラーが発生した場合にも処理を継続できるように改善していきました。
実際に動かしてみる
監視処理では、登録したサイトを順番に確認します。
イメージとしては、
監視チェックを開始します。
[確認] テストサイト
https://example.com
[検出] キーワード「Example」が出現しました。
[通知] Discordへ通知しました。
という流れです。
このように、コンソール上でも監視状況を確認できるようにしています。
個人開発で販売まで挑戦
今回のWebMonitorは、単なるプログラム制作で終わらせず、実際に商品として公開するところまで挑戦しています。
開発、テスト、GUI制作、通知機能、商品ページの作成、販売までを一人で進めました。
個人開発では「作ること」だけでなく、
作る → 公開する → 使ってもらう → 改善する
というサイクルを回すことも重要だと感じています。
現在は実際の利用者からの反応を見ながら、今後の改善点を探している段階です。
今後改善したいこと
今後は実際の利用状況を見ながら、
- より使いやすいGUI
- 監視機能の改善
- 通知機能の改善
- エラー処理の強化
- 新しい監視方法
などを検討していきたいと思っています。
まとめ
今回はPythonでWebサイト・キーワード監視ツール「WebMonitor」を個人開発しました。
Webサイトを定期的に確認し、指定したキーワードや変化を検知したらDiscordやメールで知らせるという、できるだけシンプルなツールを目指しています。
個人開発したソフトウェアを実際に販売するところまで進めることができたので、今後は利用者の反応を見ながら改善していきたいと思います。
WebMonitor
WebMonitorは以下で公開しています。
Windows向けの買い切り型ソフトウェアです。
最後まで読んでいただき、ありがとうございました。