如何在使用selenium python切换帧时获得完整的html代码?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在使用selenium python切换帧时获得完整的html代码?相关的知识,希望对你有一定的参考价值。

我正试图对一个有两个框架的html表格进行刮擦。当切换到第一个框架时,代码运行良好,但当切换到默认框架,然后切换到第二个框架时,我无法得到完整的html代码。

driver = webdriver.Chrome('/Users/Administrador/Documents/chromedriver')
main_url = 'https://www.justiciacordoba.gob.ar/Estatico/JEL/Escrutinios/ReportesEleccion20190512/default.html'
driver.get(main_url)

#This works fine:

driver.switch_to.frame("topFrame")

# This doesnt:

driver.switch_to.default_content()
driver.switch_to.frame('mainFrame')

page = driver.page_source
page

输出。

'<html><head></head><body></body></html>'
答案

全页!

<frame src="about:blank" name="mainFrame" align="center">
    #document
    <html>
        <head></head>
        <body></body>
    </html>
</frame>
另一答案

看来你看到的行为是正确的。当 WebDriver的重点是在 <frame>名称 作为 顶部框架,除非您从 <select> 元素,并发起搜索,其中的元素在 <frame>名称 作为 主框架 并没有被赎回。因此你会看到以下行为。

  • 代码块:

    driver.get('https://www.justiciacordoba.gob.ar/Estatico/JEL/Escrutinios/ReportesEleccion20190512/default.html')
    driver.switch_to.frame("topFrame")
    driver.switch_to.default_content()
    driver.switch_to.frame('mainFrame')
    print(driver.page_source)
    
  • 控制台输出。

    <html><head></head><body></body></html>
    

在这种情况下,如果你还想提取完整的HTML从 顶层内容 你可以切换到 default_content() 如下所示。

  • 代码块:

    driver.get('https://www.justiciacordoba.gob.ar/Estatico/JEL/Escrutinios/ReportesEleccion20190512/default.html')
    driver.switch_to.frame("topFrame")
    driver.switch_to.default_content()
    driver.switch_to.frame('mainFrame')
    print(driver.page_source)
    driver.switch_to.default_content()
    print(driver.page_source)
    
  • 控制台输出。

    <html><head></head><body></body></html>
    <html><head></head><frameset rows="190,*" cols="*" framespacing="0" frameborder="NO" border="0" id="fset">
        <frame src="Index.html" name="topFrame" scrolling="NO" cd_frame_id_="887435be8ea834d3aec3a905bb2f8019">
        <frame src="about:blank" name="mainFrame" align="center" cd_frame_id_="a1abd873a60c8db45dc83e5334321cbc">
    </frameset><noframes></noframes>
    
    </html>
    

以上是关于如何在使用selenium python切换帧时获得完整的html代码?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Selenium for Python 中切换到新窗口?

在 Tkinter 中切换帧时出错

python+selenium:iframe框架中动态id如何切换

通过 Selenium 和 python 切换到 iframe

python+selenium 切换浏览器tab

Python+Selenium练习篇之14-处理iframe切换/处理Alert弹窗