我正在嘗試使用 Selenium 來學習不同的網路抓取方式。
執行代碼時,Firefox 啟動并彈出“接受 cookie”或任何內容。檢查頁面時,我無法找到“接受”按鈕。
到目前為止我的代碼:
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service
import pandas as pd
import time
PATH = "C:/Users/myuser/Desktop/Driver/geckodriver.exe"
driver = webdriver.Firefox(executable_path=PATH)
driver.maximize_window() # For maximizing window
driver.get("https://www.immonet.de/")
button_pos = driver.find_element(by=By.CLASS_NAME, value="sc-gsDKAQ fILFKg")
button_pos.click()
print(driver.title)
input = input()
我收到以下錯誤:無法找到元素:.sc-gsDKAQ fILFKg
我的想法是通過檢查工具定位按鈕,如下所示:

我錯過了什么或做錯了什么?我如何找到合適的元素?
謝謝!拍
uj5u.com熱心網友回復:
首先,要顯示此 url,必須接受 cookie,但接受并單擊 cookie 按鈕并非易事,因為 cookie 按鈕位于影子根(打開)selenium 下,而 webdriverWait 在影子根上無能為力,所以要執行 shadow root 你需要應用 JavaScript querySelector。
#執行shadow root并接受cookies
driver.execute_script('''return document.querySelector('div#usercentrics-root').shadowRoot.querySelector('button[data-testid="uc-accept-all-button"]')''').click()
uj5u.com熱心網友回復:
html 元素中的類屬性可以包含多個用空格分隔的類。即"sc-gsDKAQ fILFKg",包含兩個類,sc-gsDKAQ和fILFKg。
您可以使用其中任何一個,但兩者都是隨機的,并且可以在下次重新編譯 css 時更改。我建議考慮使用data-testid屬性的 xpath
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/490643.html
上一篇:使用R抓取在下一頁繼續的表
下一篇:帶有httr2包的POST請求
