Python爬虫实现selenium处理iframe作用域问题


Posted in Python onJanuary 27, 2021

项目场景:

在使用selenium模块进行数据爬取时,通常会遇到爬取iframe中的内容。会因为定位的作用域问题爬取不到数据。

问题描述:

我们以菜鸟教程的运行实例为案例。
按照正常的定位

Python爬虫实现selenium处理iframe作用域问题

会以文本块生成xpath为/html/body/text()。这样的话根据xpath进行如下代码编写。

#!/user/bin/
# -*- coding:UTF-8 -*-
# Author:Master

from selenium import webdriver
import time

driver = webdriver.Chrome(executable_path="./chromedriver")
driver.get('https://www.runoob.com/try/runcode.php?filename=HelloWorld&type=python3')
time.sleep(2)
text = driver.find_element_by_xpath('/html/body').text
print(text)
time.sleep(5)
driver.quit()

执行结果:

Python爬虫实现selenium处理iframe作用域问题

很明显这并不是想要的结果。

原因分析:

当我们打开抓包工具定位到Hello, World!文本的时候会发现,该文本是在一个iframe中。这样的话我们xpath所定位到的内容则是大的html中的路径。我们需要的内容则是在iframe中的小的html中。

解决方案:

通过分析发现,想要解决问题的实质就是改变作用域。通过switch_to.frame(‘id')方法来改变作用域就可以了。

重新编写代码:

#!/user/bin/
# -*- coding:UTF-8 -*-
# Author:Master

from selenium import webdriver
import time

driver = webdriver.Chrome(executable_path="./chromedriver")
driver.get('https://www.runoob.com/try/runcode.php?filename=HelloWorld&type=python3')
time.sleep(2)
driver.switch_to.frame('iframeResult')
text = driver.find_element_by_xpath('/html/body').text
print(text)
time.sleep(5)
driver.quit()

查看运行结果:

Python爬虫实现selenium处理iframe作用域问题

到此这篇关于Python爬虫实现selenium处理iframe作用域问题的文章就介绍到这了,更多相关selenium iframe作用域内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python中optparser库用法实例详解
Jan 26 Python
Tensorflow卷积神经网络实例
May 24 Python
numpy 计算两个数组重复程度的方法
Nov 07 Python
python3实现指定目录下文件sha256及文件大小统计
Feb 25 Python
Python闭包和装饰器用法实例详解
May 22 Python
pyqt5之将textBrowser的内容写入txt文档的方法
Jun 21 Python
Python Django模板之模板过滤器与自定义模板过滤器示例
Oct 18 Python
详解Python 循环嵌套
Jul 09 Python
flask开启多线程的具体方法
Aug 02 Python
浅谈Python描述数据结构之KMP篇
Sep 06 Python
python 用pandas实现数据透视表功能
Dec 21 Python
浅谈盘点5种基于Python生成的个性化语音方法
Feb 05 Python
python利用appium实现手机APP自动化的示例
Jan 26 #Python
python 基于opencv去除图片阴影
Jan 26 #Python
python中用ggplot绘制画图实例讲解
Jan 26 #Python
python中altair可视化库实例用法
Jan 26 #Python
用Python制作音乐海报
Jan 26 #Python
python中pyqtgraph知识点总结
Jan 26 #Python
Appium+Python实现简单的自动化登录测试的实现
Jan 26 #Python
You might like
PHP+MYSQL的文章管理系统(一)
2006/10/09 PHP
php中判断字符串是否全是中文或含有中文的实现代码
2011/09/16 PHP
PHP+iFrame实现页面无需刷新的异步文件上传
2014/09/16 PHP
php基于curl扩展制作跨平台的restfule 接口
2015/05/11 PHP
jQuery 中关于CSS操作部分使用说明
2007/06/10 Javascript
javascript自执行函数之伪命名空间封装法
2010/12/25 Javascript
JavaScript中的null和undefined解析
2012/04/14 Javascript
解析jQuery与其它js(Prototype)库兼容共存
2013/07/04 Javascript
使用JavaScript链式编程实现模拟Jquery函数
2014/12/21 Javascript
jQuery过滤选择器详解
2015/01/13 Javascript
纯js模拟div层弹性运动的方法
2015/07/27 Javascript
利用jquery给指定的table动态添加一行、删除一行的方法
2016/10/12 Javascript
详解vue-validator(vue验证器)
2017/01/16 Javascript
js使用generator函数同步执行ajax任务
2017/09/05 Javascript
AngularJS 多指令Scope问题的解决
2018/10/25 Javascript
微信小程序实现轨迹回放的示例代码
2019/12/13 Javascript
Vue+elementUI实现多图片上传与回显功能(含回显后继续上传或删除)
2020/03/23 Javascript
Vue中函数防抖节流的理解及应用实现
2020/04/24 Javascript
[01:42:49]DOTA2-DPC中国联赛 正赛 iG vs PSG.LGD BO3 第一场 2月26日
2021/03/11 DOTA
python 切片和range()用法说明
2013/03/24 Python
Python实现方便使用的级联进度信息实例
2015/05/05 Python
python动态性强类型用法实例
2015/05/09 Python
Python编程之属性和方法实例详解
2015/05/19 Python
解决Spyder中图片显示太小的问题
2018/04/27 Python
Python实现查询某个目录下修改时间最新的文件示例
2018/08/29 Python
python二进制读写及特殊码同步实现详解
2019/10/11 Python
python 实现将小图片放到另一个较大的白色或黑色背景图片中
2019/12/12 Python
html5 视频播放解决方案
2016/11/06 HTML / CSS
CK美国官网:Calvin Klein
2016/08/26 全球购物
数控技术与应用毕业生自荐信
2013/09/24 职场文书
机修工岗位职责
2013/11/24 职场文书
幼儿园国庆节活动方案
2014/02/01 职场文书
中学生寄语大全
2014/04/03 职场文书
预备党员自我批评思想汇报
2014/10/10 职场文书
十一月早安语录:把心放轻,人生就是一朵自在的云
2019/11/04 职场文书
mysql如何查询连续记录
2022/05/11 MySQL