【发布时间】:2021-04-16 21:53:18
【问题描述】:
这是我第一次使用 Selenium 和网页抓取。我一直被烦人的 GDPR iframe 困扰。我只是想去一个网站,在搜索栏中搜索一些东西,然后单击其中一个结果。但在我取消 GDPR 同意后,它似乎没有任何作用。
重要的是,它不会给出任何错误。
这是我非常简单的代码:
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import time
#Web driver
driver = webdriver.Chrome(executable_path="C:\Program Files (x86)\chromedriver.exe")
driver.get("https://transfermarkt.co.uk/")
search = driver.find_element_by_name("query")
search.send_keys("Sevilla FC")
search.send_keys(Keys.RETURN)
WebDriverWait(driver,10).until(EC.frame_to_be_available_and_switch_to_it((By.ID, "sp_message_iframe_382445")))
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, "//button[text()='ACCEPT ALL']"))).click()
try:
sevfclink = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, "368")))
sevfclink.click()
except:
driver.quit()
time.sleep(5)
driver.quit()
【问题讨论】:
-
这就是你的全部代码吗?它在哪条线上失败了?我假设如果你让它静置 10 秒以上,它最终会超时并给你一个错误,但你说你没有收到任何错误。 ID 为 368,这似乎不是一个稳定的定位器。我会找到另一种方法来定位任何元素。
-
您永远不会将驱动程序从 iframe 中切换出来。这是设计使然吗?
标签: python selenium web-scraping iframe