みなさんこんにちは。いまじんです。
みなさんは運転免許を持っているでしょうか?
私は大学一年生の頃から今年こそと思い続け、ついに大学生活最後の春休みになってしまいました。
そして、きたるGWにドライブデートをすると言うモチベーションを持って先日やっと教習所に足を運びました。
しかし受付に行き話を聞くと、コロナの影響(?)で非常に混んでいると言われました。 どんなにスケジュールに空きがあるかたでも4月までに卒業することは相当頑張ってキャンセル待ちをしない限りおそらく無理でしょうと。
それは困ります。
4月には就職のため引っ越してしまうので週末に教習を受けに地元に帰ってくるなんてまっぴらごめんです。
それこそモチベーションが下がってお金を無駄にしてしまう...
でも今回を逃したら一生免許を取れない気がしたのでやはり申し込みました。
どうにかならんものかなあと思っていたら、そこらへんを歩いていた優しそうなオジサン職員が
こまめに予約サイトを開いて確認するといいよ。キャンセルする人意外と多いから。
と。
こういうわけで今回は教習所の予約サイトを一定の時間で繰り返し訪問し、教習の予約枠に空きがあれば通知を飛ばしてくれるシステムをつくりました。
具体的にはPuppeteerをLambdaにデプロイしてSlackに通知を飛ばしています。 定期実行にはCloudWatchを使いました。 実際のコードは教習所が特定できたりしちゃってよくなさそうなので割愛させていただきます。
主なつまりポイントとしては、アクセスしようとしている要素がiframeの中にあることに気づかずなかなか時間を溶かしたことです。
Puppeteer - How to fill form that is inside an iframe?
スクレイピングは初めてでしたが凄く楽しいなと思いました。
特にデバッグ用にheadlessモードをオフにして実際にブラウザが操作されているのを見るとかなりテンションがあがりました。
食わず嫌いを克服できたので今後はもっとスクレイピングを日々の生活に役立てたいと思います。
自動車学校では意外と楽しく過ごしています。というのも今年度は一度も大学で授業が受けられず、1年ぶりのオフラインでの講義だからです。
なんとしてでも3月中に卒業するぞ。
いまじん
(もちろん相手のサーバーの負荷にならないように気をつけて実装しました)
参照リンク