ことの発端
妻はダンス教室に通っているのですが、良い場所(先生に近い場所らしいですw)を取るため、早めに行って場所取りしていたようです。それがコロナ禍によりWeb予約システムに変わってしまいました。そのせいで、月に1回、0時から始まるレッスンの場所取り争奪戦がはじまったのです。次月のすべてのレッスンの場所取りは、夜中の数分間で決まってしまいます。複数の端末を駆使するも、結果的に妻1人でそれをサバケず、そのつけは私に回ってくるのでした。 つまり、私も0時の争奪戦の参戦が決定したのです。
平日の場合もあり、生活リズムが崩れてしまうので何度か断りましたが、あの手この手をつかって協力を強要してくるのです。妻が。
私の生活習慣を守るため、(妻が勝手に決めた)私の予約担当分については、Webスクレイピングでなんとかできないかと考えたのがことの発端であります。
ミッションコンプリートの条件
毎月1回強要される真夜中の争奪戦から離脱し、平常な生活を取り戻すことがツール開発の目的です。私の代わりに争奪戦に参戦するツールで無事予約できれば、ミッションコンプリートになります。なお、妻には極秘で進めます。奇跡的にミッションコンプリートできたとしても話しません。強要のエスカレーションを防ぐためです。
開発環境
- OS:Windows 10
- Python 3.10.4
- selenium 4.1.5
- openpyxl 3.0.10
- Google Chrome
- chromedriver.exe
(バージョンは、使用するGoogleChromeに依存)
Webスクレイピング処理では、ログインなどブラウザ操作が必要なので seleniumを選択しました。
要件定義
今考えているのは、大雑把ですが以下のような要件です。
- 会員情報、予約情報(予約レッスン日時、予約場所など)は、Excelで管理
- Excelファイルより必要情報(会員情報など)読み込む。
- 読み込んだ情報を元にログインし、予約操作を行う。
- 処理結果がわかるようにする。
- ツールの起動時間の設定ができるようにする。
Pythonで初めてプログラミングする私にはなかなか難しそうです。
でもこの状況から可及的速やかに抜け出したいので、ググりまくって頑張ります!
今回は、「ことの発端」を説明させていただきました。
次回からは、ミッションコンプリートを目指した実際の開発過程について発信していく予定です。