予約キャンセル待ちに対応するため、キャンセルが発生した場合にすぐに予約を完了できるPythonコードを作成しました。

予約キャンセルが発生したらメールでお知らせがありそれから予約するのですがメールを見落としたり、対応が遅れて予約できないことがあります。

この予約を自動化できないかと考えPythonコードで作成することにしました。

Pythonは初心者で、学習しながら一つ一つコードを書いていきました。

*Python(パイソン)は、シンプルで読みやすい文法を持つプログラミング言語の一つです。1991年にオランダのプログラマー、グイド・ヴァンロッサム(Guido van Rossum)によって開発されました。

Pythonコード構成の概要

1.予約サイトにログインしてメールアドレス、パスワードを入力する。

2.希望の予約ページに移動する。

3.予約ページを周期的に画面を更新をしキャンセルが発生したら予約ボタンが現れるので予約ボタンを確認する。

4.確認されたら予約ボタンをクリックし終了します。

Pythonの開発環境を準備

1.Pythonのインストール

2.Selenium pythonのインストール

3.Chromedriverのインストール

4.Visual Studio Codeのインストール

5.Pythonコードの作成

6.PCディスクトップにPythonを実行するバッチファイルのショートカットを作成してワンクリックでPythonを実行する。

1.Pythonのインストール

PC(Windows11)にインストールします。

https://www.python.org/

画面上部の「Downloads」という箇所①マウスを乗せると、以下の画像メニューが表示されます。

表示されたメニューの右側に「Python 3.13.0」ボタン ②をクリックしてください。

 

NO.1


ボタンをクリックするとダウンロードが開始されます。
完了したらファイルを開いて下さい。

ファイルを開くと、以下のような画面が表示されます。

表示された画面の一番下の「Add Python 3.10 to PATH」をチェックをしてインストールしてください。

 

NO.2


インストールが終了しました。

 

NO.3

 

Pythonが使えるようになっているか確認します。

Pythonを用いるには「コマンドプロンプト」と呼ばれるツールを用います。Windowsマークを右クリックします。「ターミナル(管理者)」をクリックします。
NO.4

 

画面が現れてらコマンド python –versionと入力し「Enter」キーを押してください。

Python 3.12.4と表示されれば、正常にPythonのインストールができています。

 

NO.5


2.Selenium pythonのインストール

Sleniumは、ウェブブラウザを自動化するためのツールであり、Pythonを使って制御できます。

Seleniumを使用することで、ユーザーはプログラムでウェブページを操作したり、データを取得したりすることが可能です。

コマンドプロンプトを起動し以下を入力します。

pip install seleniumと入力し「Enter」キーを押してください。

 

NO.6

 

3.Chromedriverのインストール

Chromedriverは、Google Chromeブラウザを自動操作するためのツールです。これは、Selenium WebDriverの一部として使用され、ブラウザの自動化やテストを実行する際に利用されます。

Chromeを開きバージョンを確認してください。

画面右上のメニューアイコン→ヘルプ→Google Chromeについてを押します。

 

 

画面の赤枠部分を確認してください。

 

NO.8

Chromedriverバージョン 131.0.6778.70をインストールします。

ダウンロード  |  ChromeDriver  |  Chrome for Developers

chromeバージョンは115以降ですので下図赤枠をクリックしてください。

 

NO.9


Chromeのバージョンは131.0.6778.70となっています。

同じバージョンがなければもっとも近いバージョンを選択します。

windowsのバージョンは64ビットですので下図赤枠のChrome DriverのURLにアクセスし、Chrome Driverをダウンロードします。

 

NO.10


Chromedriver-win64.zipがダウンロードされました。

NO.11

zipファイルを解凍します。

下記chromedriver.exeファイルがあります。

 

NO.12

Chromedriverは基本的にどこに配置しても動作しますが私は下記に配置しました。

C:\Users\PC_user1\AppData\Local\Programs\Python\Python312\Lib\chromedriver.exe

4.Visual Studio Codeのインストール

Visual Studio Code (VS Code) は、Microsoft が開発した軽量で高速なオープンソースのコードエディタです。

さまざまなプログラミング言語に対応しており、開発者向けに多機能ながら使いやすい環境を提供します。

このイディターを使用してPythonのコードをプログラミィングしてゆきます。

下記URLよりVScodeの公式サイトにアクセスします。

https://code.visualstudio.com/

赤枠を選択します。

 

NO.13

VSCodeUserSetup-x64-1.95.3.exeがダウンロードされました。

 

このファイルを実行します。

画面に従ってインストールします。

インストールが完了しました。

 

NO.14

 

アプリケーションの日本語化をおこないます。

①拡張機能を選択します。

②languageと入力します。

③Japanese Language Packを選択します。

 

NO.15


日本語化されました。

 

NO.16

 

ワンクリックでコードを実行してくれる拡張機能をインストールします。

上記と同様にcode runnerを検索しcode runnerをインストールします。

実行ボタン▽を横にしたマークが実行ボタンです。

 

NO.17

5.Pythonのコードを作成

デイスクトップに作業用のフォルダーを用意します。ディスクトップ上で右クリックしPython_Codeというフォルダーを作成します。

このフォルダー内にWating List.pyファイルを作成してコードを書きました。

WEBページの要素の確認方法

メールアドレス入力欄を右クリックすると「検証」が表示されます。

「検証」をクリックするとその要素が表示されます。

この要素を参考にしてPythonコードを書いていきます。

 

今回作成したPythonのコードを説明します。

 

NO.19


1.  from selenium import webdriver

PythonのSeleniumライブラリの一部で、ブラウザを自動化するために使用されるモジュールです。

2.  from selenium.webdriver.common.by import By
Selenium ライブラリで使用されるクラスで、Webページ内の要素を検索するための 検索方法を指定するためのものです。

3.  from selenium.webdriver.common.keys import Keys
Selenium WebDriver を使ってキーボード操作をシミュレーションする際に使用されるクラスです。

4.  from selenium.webdriver.chrome.service import Service
Selenium WebDriverを使ってChromeブラウザを操作する際に、ChromeDriverの起動と管理を簡単に行うためのクラスです。

5.
from selenium.webdriver.common.action_chains import ActionChains
Selenium WebDriver が提供するクラスで、ブラウザでの複雑なユーザー操作(例: マウスの動き、クリック、ダブルクリック、ドラッグ&ドロップ、キーボード操作など)をシミュレートするために使用されます。

6.  from selenium.webdriver.support.ui import WebDriverWait
Selenium WebDriver において特定の条件が満たされるまで待機する機能を提供するクラスです。

7.  from selenium.webdriver.support import expected_conditions as
EC
selenium.webdriver.support.expectedconditionの中に含まれる EC(Expected Conditions) は、Selenium WebDriverを使用してWebアプリケーションをテストするときに役立つモジュールです。

NO.20


9.  import time

Pythonのtimeモジュールは、時間に関連する操作を行うための機能を提供します。このモジュールを使うことで、時間の計測、現在の時間の取得、スリープ処理などを簡単に実行できます。

11.  driver = webdriver.Chrome()
webdriver:Selenium ライブラリに含まれるモジュールの一部で、ブラウザを制御するためのインターフェースを提供します。
Chrome:Google Chrome ブラウザを操作するためのクラスです。このクラスをインスタンス化すると、指定された Chrome ブラウザが起動します。
driver:ウェブページの操作(例: ページの読み込み、要素のクリック、フォーム入力など)を行います。
12.  home_url = “https://*********.jp/home”
ログインするページのURLです。

13.  driver.get(home_url)
ウェブブラウザを制御するために使用されます。

16.  login_button = driver.find_element(By.CSS_SELECTOR, ‘[data-testid
=”button-login”]’)
login_button.click()
ログインボタンの要素を検索します。 次のHTMLから検索できます。
<button type=”submit” title=”ログイン” data-testid=”button-login” class
=”m_button primary min_w_200 login-button” data-v-4972a420=””>ログイン</button>

17.  login_button.click()

 


22.  email_input=WebDriverWait(driver,10).until(EC.presence_of_element_located

((By.NAME,”mail_address”)))email_input.send_keys(“*******@gmail.com”)
メールアドレス入力欄の要素
<input name=”mail_address” placeholder=”user@*******.jp” autocomplete
=”username” data-testid=”input-mail_address” type=”text” class=”w_100p”>

24.  email_input.send_keys(“*******@gmail.com”)
メールアドレスを入力
27.  password_input = WebDriverWait(driver, 10).until(EC.presence_of_element_located
((By.NAME, “password”)))
パスワード入力欄の要素を検索します。HTMLを参照
<input data-v-1c23da73=”” name=”password” autocomplete=”new-password” data-testid
=”input-password” type=”password” class=”w_100p”>
28.  password_input.send_keys(“*******”)
パスワードを入力
31.  login_button = WebDriverWait(driver, 1).until(EC.element_to_be_clickable
((By.CLASS_NAME, “login”)))

ログインボタンの要素を検索します。 HTMLを参照
<button data-v-5afa4a5f=”” type=”submit” class=”m_button primary block login” data-testid
=”login-modal-button-login”>
ログイン
</button>
33.  login_button.click()
ログインボタンクリック

35.  time.sleep(2)

38.  button_xpath = “//button[@type=’button’ and contains
(@class, ‘m_button’) and contains(@class, ‘primary’) and contains(., ‘*****予約する’)]”

特定のHTML要素(ボタン)を指定するためのXPath式を表しています。<button> 要素を探します。

39.  found_button = False
ボタンが見つかってない状態です。

 


41.  try:
42.  while not found_button:
found_buttonボタンが見つかるまでループを続けます。

43.  try:
エラーが発生する可能性があるコードです。
45.  url=”https://********.jp/******/******/*******”指定したURLです。

46.  driver.get(url)
指定された URL にブラウザを移動させます。
47.  time.sleep(2)
指定された秒数だけプログラムの実行を一時停止します。
49.  button = WebDriverWait(driver, 2).until(EC.visibility_of_element_located((By.XPATH, “//button[contains(text(), ‘ABCDで予約する’)]”)))
特定のボタンを探して操作するためのものです。
指定した条件が満たされるまで一定時間待つためのSeleniumの機能です。
50.  found_button = True
ボタンが見つかったと示しています。
51.  print(“ボタンが表示されました!”)
52.  time.sleep(1)
54.  button.click()

55.   print(“ABCDで予約するボタンがクリックされました。!”)

58.  button = WebDriverWait(driver, 2).until(EC.visibility_of_element_located((By.XPATH, “//button[contains(text(), ‘予約完了する’)]”)))
Seleniumを使って特定のボタン要素を探し、可視状態になるまで最大2秒間待つ処理を行っています。

60.  button.click()

61.   print(“予約完了するボタンがクリックされました。!”)

 

NO.23

 

63.  except
コードの一部でエラー(例外)が発生した場合に、それをキャッチして適切に処理するための構文です。

66.  driver.refresh()
現在表示されているウェブページを リロード(再読み込み)することです。

67.  time.sleep(8)
再読み込みの間隔(必要に応じて調整)
69.  finally:
finallyはPythonの例外処理におけるキーワードで、try…except…finally またはtry….finally 構造の一部として使われます。このブロックに含まれるコードは、例外が発生したかどうかに関係なく、必ず実行されるという特徴があります。
71. driver.quit()
最後にブラウザを閉じる


6.WindowsのPCでデスクトップからPythonスクリプトを実行するバッチファイルの作成。

Pythonの実行は通常コマンドプロンプトでおこないます。

①Python_Codeのデイレクトリーに移動します。

 

NO.24

 

②Wating_Listを実行します。

 

NO.25

 

この操作は面倒なのでPythonを実行するバッチファイルのショトカットを作成しました。

メモ帳を開きます。

以下のコードを入力します。pythonの後に実行したいスクリプトのパスを指定します。


“C:\Users\YourUsername\Deskyop\script.py”をスクリプトの実際のパスに置き換えます。

pauseを入れることで、スクリプト実行後にコマンドプロンプトが閉じるのを防ぎます。

pythonのインストール先の調べ方はVisual Studio Codeで確認できます。

 

NO.26

NO.27

@echo off
“C:\Users\PC_user1\AppData\Local\Programs\Python\Python312\python.exe” “C:\Users\PC_user1\Desktop\Python_Code\Wating_List
pause

名前を付けて保存」で以下のように保存します。
ファイル名: run script.bat

ファイルの種類: すべてのファイル

エンコーディング: ANSI

ショートカットができました。

クリックでPythonコードが実行されます。

 

NO.28

以上
最新情報をチェック!