Philarium
制作物一覧

Salon Schedule Analyzer

Python
Selenium
Scraping
Set Operations

サロン予約サイトの空き状況を、全スタイリスト分まとめて取得して比較する分析ツール。 予約表を「日時の集合」に変換し、集合演算で「指定した担当者だけが空いている時間帯」を抽出します。

Project Goal

予約サイトでは、担当者を1人選んでからでないと空き状況を見られません。 担当者どうしの空きを比べるには、人数分のページを開いて予約表を見比べることになります。
この見比べを自動化し、サイト上では直接見られない「担当者をまたいだ切り口」で空き状況を調べられるようにしました。

システム概要

  1. Input
    サロンのURLと担当者名
  2. Crawl
    全担当者の予約表を取得
  3. Parse
    空き枠を日時の集合に変換
  4. Set Ops
    差集合で時間帯を抽出

主な機能

動的に描画される予約表の取得

予約表はJavaScriptで後から描画されるため、Selenium WebDriverで実際にブラウザを操作して取得します。 要素が現れるまで待つ明示的な待機を使い、担当者の一覧からメニューの選択、予約表の表示までをたどります。

予約表を「日時の集合」に変換

予約表は、列が日付、行が時刻の表です。空いているセルを「日付+時刻」の値に直し、担当者ごとの集合として持ちます。 日付の見出しと列の数が合わないときは、その担当者の分を採用せずに飛ばし、ずれた日時が混ざらないようにしています。

集合演算による抽出

指定した担当者の集合から、ほかの全員の集合の和を引きます。 残るのは「その担当者だけが空いている時間帯」で、日時の順に並べて表示します。

対象の担当者 − ( 担当者A ∪ 担当者B ∪ … )

途中で失敗しても止まらない

対象のメニューを扱っていない担当者や、予約表の解析に失敗した担当者は、警告を出して飛ばします。 1人分の失敗で全体が止まらないようにしています。

Driving Reservation Bot との違い

どちらも予約サイトの空き状況を自動で取得しますが、解いている問題が違います。Driving Reservation Botは「時間の流れの中での変化」を見張り、こちらは「ある時点での担当者どうしの違い」を調べます。

観点Salon Schedule AnalyzerDriving Reservation Bot
知りたいこと条件に合う時間帯はどこか新しく空いた枠はあるか
比べる相手同じ時点の、ほかの担当者前回の自分の取得結果
使う演算担当者をまたいだ差集合時間をまたいだ差分
動かし方必要なときに1回実行5分おきに自動で実行し続ける
動く場所手元のPCAWS Lambda
結果の出し方時間帯の一覧を表示LINEに通知

※ サーバースペックの都合上、Web版のデモ公開は停止しています。