🐍

PythonのWebスクレイピングでボタンやリンクが押せないときに試すこと

2022/03/18に公開約1,500字

Python で Web スクレイピングをしていると、click 関数でボタンやリンクを押してもイベントが発火しないことがあります。

↓ これ

driver.find_element(By.**, “xxx”).click()

こういった場合の対処方法をまとめたので、備忘録として残しておきます。

chromeDriver の状態

options = Options()
options.add_argument(--headless”)
driver = webdriver.Chrome(get_driver_path(), chrome_options=options)
driver.get(“https://xxx.com”)

1. 画面のスクショを撮る

スクショを撮って現状を把握します。

driver.save_screenshot("save_image_path")

2. クリックしたい要素をウィンドウ内に持ってくる → クリック

ウィンドウサイズを大きくする

driver.set_window_size(1920, 1080)

or

一番下までスクロールする

driver.execute_script(“window.scrollTo(0, document.body.scrollHeight);)

ウインドウ内に表示できたら、click を実行

3. サブミットする

driver.find_element(By.**, “xxx”).submit()

4. Enter キーを押す

driver.find_element(By.**, “xxx”).send_keys(Keys.ENTER)

5. element の絶対位置を指定してクリック

element = driver.find_element(By.**, “”)
loc = element.location
x, y = loc[“x”], loc[“y”]
actions = ActionChains(driver)
actions.move_by_offset(x, y)
actions.click()
actions.perform()

6. element のクリックを行うスクリプトを実行

driver.execute_script(“arguments[0].click();, driver.find_element(By.**, “”))

7. element に埋め込まれているイベントを直接実行

driver.execute_script(“embedded_script”)

8. イベントと同じような処理を行うスクリプトを無理やり記述して実行

driver.execute_script(“customize_script1")
driver.execute_script(“customize_script2”)
driver.execute_script(“customize_script3")
driver.execute_script(“customize_script4”)
GitHubで編集を提案

Discussion

ログインするとコメントできます