我正在嘗試等待網站上出現 cookie 橫幅并點擊接受。cookie 橫幅似乎被檢測到并被接受,但隨后再次出現并阻止執行任何進一步的操作,直到再次執行該程序。我無法找出原因。
在我繼續抓取頁面之前,有沒有一種方法可以讓我繼續接受 cookie,直到此橫幅不出現?
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
PATH = 'C:\Program Files (x86)\chromedriver.exe'
driver = webdriver.Chrome(PATH)
wait = WebDriverWait(driver, 20)
page = "https://www.sainsburys.co.uk/shop/gb/groceries/meat-fish/meatandfish-essentials#langId=44&storeId=10151&catalogId=10241&categoryId=474595&parent_category_rn=13343&top_category=13343&pageSize=60&orderBy=TOP_SELLERS|SEQUENCING&searchTerm=&beginIndex=0&facet="
driver.get(page)
# wait for cookies banner
wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, "#onetrust-accept-btn-handler"))).click()
uj5u.com熱心網友回復:
一種快速的解決方法是將 cookie clicker 包裝在一個函式中,并在需要時使用它。
def cookie_handler():
try:
driver.find_element(By.ID, "onetrust-accept-btn-handler").click()
except:
pass
# this is the main code and uses the cookie_handler fucntion as required.
driver.get("https://www.sainsburys.co.uk/shop/gb/groceries/meat-fish/meatandfish-essentials#langId=44&storeId=10151&catalogId=10241&categoryId=474595&parent_category_rn=13343&top_category=13343&pageSize=60&orderBy=TOP_SELLERS|SEQUENCING&searchTerm=&beginIndex=0&facet=")
time.sleep(5)
cookie_handler()
time.sleep(3)
driver.find_element(By.LINK_TEXT, "Nectar").click()
time.sleep(2)
cookie_handler()
time.sleep(2)
driver.quit()
此外,如果您希望它健壯,webdriverwait請像您所做的那樣包含。此外,您可以嘗試先檢查是否有元素(接受 cookie 按鈕),然后單擊它,否則pass。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/442009.html
