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实现问号表达式(?)的方法
Nov 27 Python
Python基于回溯法子集树模板解决全排列问题示例
Sep 07 Python
对Python3中bytes和HexStr之间的转换详解
Dec 04 Python
itchat-python搭建微信机器人(附示例)
Jun 11 Python
Python中BeautifuSoup库的用法使用详解
Nov 15 Python
浅谈python累加求和+奇偶数求和_break_continue
Feb 25 Python
Python日志logging模块功能与用法详解
Apr 09 Python
使用python无账号无限制获取企查查信息的实例代码
Apr 17 Python
基于python实现ROC曲线绘制广场解析
Jun 28 Python
Python中实现一行拆多行和多行并一行的示例代码
Sep 06 Python
python 基于PYMYSQL使用MYSQL数据库
Dec 24 Python
使用pandas读取表格数据并进行单行数据拼接的详细教程
Mar 03 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 字符串分割和比较
2009/10/06 PHP
php使用codebase生成随机数
2014/03/25 PHP
PHP实现绘制3D扇形统计图及图片缩放实例
2014/10/01 PHP
php通过Chianz.com获取IP地址与地区的方法
2015/01/14 PHP
Yii2验证器(Validator)用法分析
2016/07/23 PHP
PHP获取访问页面HTTP状态码的实现代码
2016/11/03 PHP
Laravel中Facade的加载过程与原理详解
2017/09/22 PHP
常用js字符串判断方法整理
2013/10/18 Javascript
JS关闭窗口与JS关闭页面的几种方法小结
2013/12/17 Javascript
asp.net+js实现金额格式化
2015/02/27 Javascript
JavaScript实现简单的二级导航菜单实例
2015/04/15 Javascript
JavaScript实现列表分页功能特效
2015/05/15 Javascript
JavaScript实现鼠标滑过处生成气泡的方法
2015/05/16 Javascript
7个有用的jQuery代码片段分享
2015/05/19 Javascript
JavaScript检测字符串中是否含有html标签实现方法
2015/07/01 Javascript
JavaScript对数组进行随机重排的方法
2015/07/22 Javascript
浅析jquery数组删除指定元素的方法:grep()
2016/05/19 Javascript
node.js cookie-parser 中间件介绍
2016/06/06 Javascript
JS 实现导航菜单中的二级下拉菜单的几种方式
2016/10/31 Javascript
Angular4.0中引入laydate.js日期插件的方法教程
2017/12/25 Javascript
详解如何在项目中使用jest测试react native组件
2018/02/09 Javascript
浅谈webpack SplitChunksPlugin实用指南
2018/09/17 Javascript
react项目如何使用iconfont的方法步骤
2019/03/13 Javascript
使用jquery-easyui的布局layout写后台管理页面的代码详解
2019/06/19 jQuery
python爬虫 urllib模块发起post请求过程解析
2019/08/20 Python
python关于倒排列的知识点总结
2020/10/13 Python
Myprotein加拿大官网:欧洲第一的运动营养品牌
2018/01/06 全球购物
eBay奥地利站:eBay.at
2019/07/24 全球购物
New Balance德国官方网站:购买鞋子和服装
2019/08/31 全球购物
法人任命书范本
2014/06/04 职场文书
电子工程求职信
2014/07/17 职场文书
终止劳动合同通知书
2015/04/16 职场文书
保险公司增员口号
2015/12/25 职场文书
《彼得与狼》教学反思
2016/02/20 职场文书
windows安装 redis 6.2.6最新步骤详解
2022/04/26 Redis
Java数据结构之堆(优先队列)
2022/05/20 Java/Android