- Published on
Seleniumでディズニーチケット戦争の自動化
- Authors
- Name
- Kikusan
概要
Seleniumでディズニーチケット戦争を自動化できました。
購入のところは手動ですが、一度繋がりさえすればその後はセッションタイムアウトしない限り、購入前のリダイレクトでログインとかしても大丈夫でした。
ログインのコードも書いてますが、「一度つながるまでリロードする」で十分だったのでそれ以外はコメントアウトしてます。
決めた日付のチケットのところまで遷移するようになっているのは趣味です。なくてもいい。
Seleniumを使用するには適当なパスにChromeDriverをおいておくことと、そのVersionにあったChromeが必要なので注意してください。
リロード間隔は2秒にして、DoSにならないようにしています。
ソース
from selenium import webdriver
from time import sleep
from selenium.webdriver.common.by import By
url = 'https://reserve.tokyodisneyresort.jp/ticket/search/'
driver = webdriver.Chrome(executable_path='/your own driver pass/chromedriver')
# 予約月 - 当月
month_diff = 1
# 当月1日からの日数 11月 -> 12/5 = 35
day_number = "55"
def login():
loop_on = True
cnt = 0
while loop_on:
cnt += 1
try:
driver.get(url)
sleep(3)
login_btn = driver.find_element(By.XPATH, "//a[@href='/fli/signin/']")
loop_on = False
login_btn.click()
sleep(2)
user_id = driver.find_element(By.ID, '_userId')
user_id.send_keys("userid")
password = driver.find_element(By.ID, '_password')
password.send_keys("password")
sleep(1)
login_form = driver.find_element(By.NAME, "confirm")
login_form.click()
sleep(120)
except Exception as ex:
print(ex.__class__.__name__, cnt)
def get_ticket():
loop_on = True
cnt = 0
while loop_on:
cnt += 1
try:
driver.get(url)
sleep(1)
slick_next = driver.find_element(By.CLASS_NAME, 'slick-next')
loop_on = False
for _ in range(month_diff):
slick_next.click()
sleep(2)
date = driver.find_element(By.XPATH, f"//a[@data-daynumbercount='{day_number}']")
date.click()
sleep(3)
button = driver.find_element(By.ID, 'searchEticket')
button.click()
except Exception as e:
print(e.__class__.__name__, cnt)
sleep(2)
if __name__ == '__main__':
# login()
# print("login succeed")
get_ticket()