python使用selenium无法获取frame完整内容的问题

问题描述

我们使用 selenium 去打开一个页面,由于页面中使用了 frame 元素,只能获取部分内容,不能获取 frame 中的任何内容的问题。

解决方法

这里需要切换到 frame 获取内容,然后再把默认页面的内容拼接为一个完成的网页。下面是实现的代码。

from selenium import webdriver

option = FirefoxOptions()
driver = webdriver.Firefox(executable_path=DRIVER_PATH, options=option)
# 打开页面
driver.get("https://tjj.sh.gov.cn/tjnj/nj22.htm?d1=2022tjnj/BZSM.html")
# 获取主页面源代码
main_page_source = driver.page_source
# 找到 frame 元素
frame_element = driver.find_element_by_xpath('//frame[@name="main"]')  # 替换为实际的 frame ID 或其他定位方式
# 切换到 frame
driver.switch_to.frame(frame_element)
# 获取 frame 内容的源代码
frame_page_source = driver.page_source
# 切回主页面
driver.switch_to.default_content()
# 合并主页面和 frame 内容
complete_page_source = main_page_source.replace('</head>', f'<base href="{driver.current_url}"></head>') + frame_page_source
# 此时 complete_page_source 包含了整个页面的内容(包括 frame 内容)
print(complete_page_source)
# 关闭 WebDriver
driver.quit()

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-23 14:38:04       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-23 14:38:04       101 阅读
  3. 在Django里面运行非项目文件

    2023-12-23 14:38:04       82 阅读
  4. Python语言-面向对象

    2023-12-23 14:38:04       91 阅读

热门阅读

  1. 基于模板匹配的花朵分类 - MATLAB代码实现

    2023-12-23 14:38:04       52 阅读
  2. 【NetCore】.net core 文字转语音并实现语音播放

    2023-12-23 14:38:04       59 阅读
  3. Easy Excel 学习

    2023-12-23 14:38:04       54 阅读
  4. SolidWorks二次开发遇到的错误

    2023-12-23 14:38:04       65 阅读
  5. 频域图像增强算法:Matlab实现

    2023-12-23 14:38:04       60 阅读
  6. Centos7 openSSL

    2023-12-23 14:38:04       65 阅读