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

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

问题描述:

我已经在python中编写了一个脚本,并结合selenium来解析网页中的一些公司名称。我定义的选择器是完美无瑕的。然而,一旦网页开启了一个令人讨厌的ad弹出隐藏数据,并且我无法到达那里。我怎样才能解决我想要的数据。我试过在网页上切换几个iframes,但没有一个可以工作。我在脚本中使用的现有内容会引发错误,显示Message: no such element: Unable to locate element如何在浏览器打开时弹出“广告”?

这是我试过到目前为止:

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() 

弹出广告类似下面(亮一个):

enter image description here

您可以尝试等待广告通过点击“跳过”按钮关闭它:

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秒内

+0

非常感谢先生安德森,为你有效的答案。我从来没有遇到过你的解决方案的单个实例无效。它总是有魔力。我从你那里听到很长时间了。但是,您在哪里找到了“iframe”的位置?我的意思是,你必须看到这是因为你使用了表达式'// span [。='SKIP']'。我溺爱几个小时来解决它,但失败了。再次感谢。 – SIM

+0

你可以找到带有XPath的iframe iframe iframe [starts-with(@id,“google_ads_iframe”)]'。我只是用dev控制台找到它 - 没有什么特别的。另请注意,“跳过”按钮不在“iframe”中,因此您不必切换到帧 – Andersson