Python 如何在浏览器打开时弹出“广告”?

Python 如何在浏览器打开时弹出“广告”?,python,selenium,selenium-webdriver,web-scraping,Python,Selenium,Selenium Webdriver,Web Scraping,我已经用python结合selenium编写了一个脚本来解析网页中的一些公司名称。我定义的选择器是完美的。然而,一旦网页打开,一个恼人的广告就会弹出,隐藏了数据,为此我无法到达那里。我怎样才能把它踢出去并解析我想要的数据。我尝试过切换该网页中的几个可用iFrame,但都不起作用。我在脚本中使用的现有元素抛出一个错误,显示消息:无此类元素:无法定位元素 这就是我迄今为止所尝试的: from selenium import webdriver driver = webdriver.Chrome()

我已经用python结合selenium编写了一个脚本来解析网页中的一些公司名称。我定义的选择器是完美的。然而,一旦网页打开,一个恼人的广告就会弹出,隐藏了数据,为此我无法到达那里。我怎样才能把它踢出去并解析我想要的数据。我尝试过切换该网页中的几个可用iFrame,但都不起作用。我在脚本中使用的现有元素抛出一个错误,显示消息:无此类元素:无法定位元素

这就是我迄今为止所尝试的:

from selenium import webdriver

driver = webdriver.Chrome()
driver.get("https://www.inc.com/inc5000/list/2017")
driver.switch_to_frame(driver.find_element_by_id("jw_player_iconic"))
for item in driver.find_elements_by_css_selector("#data-container .row"):
    company = item.find_elements_by_css_selector(".company a")[0].text
    print(company)
driver.quit()
弹出式广告如下所示:


您可以单击“跳过”按钮,尝试等待广告关闭:

from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait as wait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import TimeoutException

driver = webdriver.Chrome()
driver.get("https://www.inc.com/inc5000/list/2017")
driver.maximize_window()

try:
    ad_iframe_close = wait(driver, 3).until(EC.element_to_be_clickable((By.XPATH, "//span[.='SKIP']")))
    ad_iframe_close.click()
except TimeoutException:
    pass

for item in driver.find_elements_by_css_selector("#data-container .row"):
    company = item.find_elements_by_css_selector(".company a")[0].text
    print(company)

这将允许您等待关闭广告框,或者什么也不做,以防广告框在3秒钟内没有出现

非常感谢Andersson先生的有效回答。我从来没有遇到过一个你的解决方案无效的例子。它总是很神奇。很久没有你的消息了。但是,您在哪里找到了iframe的位置?我的意思是,你一定看到了,因为你用了那个表达式//span[.='SKIP']。我浪费了几个小时来解决它,但失败了。再次感谢。您可以使用XPath//iframe[start]找到ad-iframe-with@id,google_ads_iframe]。我只是在dev控制台上找到了它——没什么特别的。还要注意的是,“跳过”按钮在iframe之外,所以您不必切换到frame