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

问题描述

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

解决方法

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

python 复制代码
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()
相关推荐
2401_898075123 分钟前
Python在金融科技(FinTech)中的应用
jvm·数据库·python
老师好,我是刘同学28 分钟前
选择排序原理与Python实现
python·排序算法
是梦终空11634 分钟前
C++中的职责链模式变体
开发语言·c++·算法
wmfglpz8838 分钟前
NumPy入门:高性能科学计算的基础
jvm·数据库·python
mjhcsp39 分钟前
C++遗传算法(Genetic Algorithm,GA):进化式全局优化的核心解析
开发语言·c++
如若1231 小时前
WSL2安装Ubuntu完整教程:自定义安装目录到D盘(--location一键搞定)
linux·运维·服务器·pytorch·python·ubuntu·计算机视觉
@fai1 小时前
【Python多线程截图】当 Python 多线程遇上底层 C 库——一次由“串图”引发的线程安全深度思考
python·opencv·numpy
alvin_20052 小时前
python之OpenGL应用(五)变换
python·opengl
燕山罗成2 小时前
JAVA多线程基础
java·开发语言
深蓝电商API2 小时前
服务器部署爬虫:Supervisor 进程守护
爬虫·python