使用硒python切换帧时如何获取完整的html代码

问题描述 投票:0回答:1

我正在尝试抓取具有两个框架的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>'
python selenium selenium-webdriver web-scraping frame
1个回答
0
投票

整页!

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

用鼠标右键单击,选择“检查”或“检查元素”,您将在“开发”窗口的“元素”选项卡中看到框架所具有的全部。

在Chrome中,您也可以按Ctrl + Shift + I,您将直接进入此标签。


0
投票

似乎您看到的是正确的行为。当WebDriver的焦点位于nametopFrame<frame>内时,除非​​您从<select>元素中选择值并启动搜索,否则<frame>内的元素将带有name作为mainFrame不会重新呈现。因此,您会看到以下行为:

  • 代码块:

    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>
    
© www.soinside.com 2019 - 2024. All rights reserved.