【问题标题】:Selenium does not render html page sourceSelenium 不渲染 html 页面源
【发布时间】:2021-01-28 12:19:37
【问题描述】:

我尝试使用 python 和 selenium 从网页获取数据:

from selenium import webdriver
driver=webdriver.Firefox()
driver.get('https://covid19.min-saude.pt/ponto-de-situacao-atual-em-portugal/')
'RECUPERADOS' in driver.page_source
False

字符串 'RECUPERADOS' 存在于驱动程序打开的浏览器窗口中,但不在 page_source 中。是什么阻止了 selenium 表单呈现页面 html?有没有办法像上面那样从页面获取数据?

【问题讨论】:

    标签: python selenium xpath webdriver webdriverwait


    【解决方案1】:

    您要搜索的元素文本位于iframe 中。您需要先切换到 iframe,然后等待元素可见,然后捕获 page_source。

    使用WebDriverWait() 并等待frame_to_be_available_and_switch_to_it()

    使用WebDriverWait() 并等待visibility_of_element_located()

    driver.get('https://covid19.min-saude.pt/ponto-de-situacao-atual-em-portugal/')
    WebDriverWait(driver,10).until(EC.frame_to_be_available_and_switch_to_it((By.XPATH,"//*[@id='main']//iframe[1]")))
    WebDriverWait(driver,20).until(EC.visibility_of_element_located((By.XPATH,"//*[name()='text'][text()='RECUPERADOS']")))
    
    if 'RECUPERADOS' in driver.page_source:
           print("YES")
    else:
           print("NO") 
    

    导入以下库。

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

    要从iframe 跳出,您需要使用以下代码。

    driver.switch_to.default_content()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-12
      • 2013-07-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多