実現したいこと
- PythonでSeleniumを利用し、チケット販売サイトにログインを行えるようにする
- チケットの販売状況を監視し、Restock通知をLINE通知する
前提
Pythonで現在、Seleniumを利用してスクレイピングをしております。
しかしながら、Chromeで当該サイトにアクセスした際の挙動とSelenium経由でアクセスした場合の挙動が異なっておりうまくいかない状況です。
具体的には、リクエストを出したときのレスポンスが帰ってこなかったり
トップ画面のローディングにひたすら時間がかかっている状態となっております。
また、その結果TOP画面に戻ってきた際にログイン状態となっておらず、正しい認証情報にも関わらずログインに失敗しているような挙動です
Chromeでアクセスした際の挙動との差異が出ている原因がわかれば、問題なく動くのではないかと愚考しておりますが
初めてSeleniumを触ることもあり、オプションの部分も調べてみましたが少しお手上げ状態のためご知見を借りられたらと思い投稿しました
発生している問題・エラーメッセージ
Message: timeout: Timed out receiving message from renderer: 299.153 (Session info: chrome=111.0.5563.111)
該当のソースコード
Python
1from selenium import webdriver 2from selenium.webdriver.chrome.options import Options 3from selenium.webdriver.support.select import Select 4from selenium.webdriver.common.by import By 5from selenium.webdriver.common.keys import Keys 6from selenium.webdriver.common.alert import Alert 7from selenium.webdriver.support.ui import WebDriverWait 8from selenium.webdriver.support import expected_conditions as EC 9from selenium.common.exceptions import TimeoutException 10from selenium.webdriver.common.action_chains import ActionChains 11from urllib3.util import wait 12import time 13import requests 14# Seleniumを起動 15options = webdriver.ChromeOptions() 16options.add_argument("start-maximized") 17options.add_argument("enable-automation") 18options.add_argument("--no-sandbox") 19options.add_argument("--disable-infobars") 20options.add_argument('--disable-extensions') 21options.add_argument("--disable-dev-shm-usage") 22options.add_argument("--disable-browser-side-navigation") 23options.add_argument("--disable-gpu") 24options.add_argument('--ignore-certificate-errors') 25options.add_argument('--ignore-ssl-errors') 26prefs = {"profile.default_content_setting_values.notifications" : 2} 27options.add_experimental_option("prefs",prefs) 28 29driver = webdriver.Chrome() 30#Debug中のためTryで囲んでないです 31driver.get("https://plan.tokyodisneyresort.jp/2/?lang=ja&login=true&redirectUrl=%2Fcart%2Fshow%2F%3Flang%3Dja") 32#Frame読み込みまち 33WebDriverWait(driver, 100).until(EC.presence_of_all_elements_located((By.CSS_SELECTOR, "#oneid-iframe"))) 34iframe = driver.find_element(By.CSS_SELECTOR, "#oneid-iframe") 35driver.switch_to.frame(iframe) 36#Submitボタン読み込みまち 37WebDriverWait(driver, 100).until(EC.presence_of_all_elements_located((By.ID,"BtnSubmit"))) 38LoginId = driver.find_element(By.CSS_SELECTOR,"#InputLoginValue") 39LoginId.send_keys("<ID>") 40time.sleep(1) 41password = driver.find_element(By.ID,"InputPassword") 42password.send_keys("<PASSWORD>") 43time.sleep(1) 44driver.find_element(By.ID,"BtnSubmit").click() 45 46#TOPに遷移してくるが、この段階でログイン状態ではない 47#チケット選択へ 48WebDriverWait(driver, 100).until(EC.presence_of_all_elements_located((By.XPATH,"/html/body/div[1]/header/div[2]/div[2]/div[1]/a"))) 49#この後、選択処理記載
試したこと
- オプションの変更
- Sleepではなく、WebDriverWaitの利用
補足情報(FW/ツールのバージョンなど)
Pyhtonは3.11

あなたの回答
tips
プレビュー