我在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()
弹出广告就像下面的那样(明亮的广告):
答案 0 :(得分:1)
您可以点击“跳过”按钮尝试等待广告关闭:
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秒