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不换行之end=与逗号的意思及用途
Nov 21 Python
python让列表倒序输出的实例
Jun 25 Python
python使用__slots__让你的代码更加节省内存
Sep 05 Python
python爬虫获取新浪新闻教学
Dec 23 Python
python requests使用socks5的例子
Jul 25 Python
Python 内置函数globals()和locals()对比详解
Dec 23 Python
Python中用pyinstaller打包时的图标问题及解决方法
Feb 17 Python
python使用Geany编辑器配置方法
Feb 21 Python
Python bisect模块原理及常见实例
Jun 17 Python
python 实现非极大值抑制算法(Non-maximum suppression, NMS)
Oct 15 Python
filter使用python3代码进行迭代元素的实例详解
Dec 03 Python
Django用内置方法实现简单搜索功能的方法
Dec 18 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
论建造顺序的重要性
2020/03/04 星际争霸
6种php上传图片重命名的方法实例
2013/11/04 PHP
php中switch与ifelse的效率区别及适用情况分析
2015/02/12 PHP
PHP防止刷新重复提交页面的示例代码
2015/11/11 PHP
Laravel中注册Facades的步骤详解
2016/03/16 PHP
JS中剪贴板兼容性、判断复制成功或失败
2021/03/09 Javascript
js操作Xml(向服务器发送Xml,处理服务器返回的Xml)(IE下有效)
2009/01/30 Javascript
javascript 面向对象全新理练之数据的封装
2009/12/03 Javascript
javascript demo 基本技巧
2009/12/18 Javascript
Jquery网页出现的乱码问题的三种解决方法
2013/06/30 Javascript
JS(JQuery)操作Array的相关方法介绍
2014/02/11 Javascript
js实现Select列表各项上移和下移的方法
2015/08/14 Javascript
Vue.js每天必学之指令系统与自定义指令
2016/09/07 Javascript
微信小程序实现横向增长表格的方法
2018/07/24 Javascript
详解js中Array的方法及技巧
2018/09/12 Javascript
微信小程序获取用户绑定手机号方法示例
2019/07/21 Javascript
js消除图片小游戏代码
2019/12/11 Javascript
使用webpack/gulp构建TypeScript项目的方法示例
2019/12/18 Javascript
js实现二级联动简单实例
2020/01/11 Javascript
Selenium执行Javascript脚本参数及返回值过程详解
2020/04/01 Javascript
[01:00:04]DOTA2上海特级锦标赛B组小组赛#1 Alliance VS Spirit第二局
2016/02/26 DOTA
[55:25]2018DOTA2亚洲邀请赛3月29日 小组赛A组 VG VS OG
2018/03/30 DOTA
Python简单实现子网掩码转换的方法
2016/04/13 Python
Python 3.x读写csv文件中数字的方法示例
2017/08/29 Python
Django查询数据库的性能优化示例代码
2017/09/24 Python
Python实现常见的回文字符串算法
2018/11/14 Python
python实现数据清洗(缺失值与异常值处理)
2019/12/02 Python
Python GUI自动化实现绕过验证码登录
2020/01/10 Python
基于python 将列表作为参数传入函数时的测试与理解
2020/06/05 Python
Python实现冒泡排序算法的完整实例
2020/11/04 Python
HTML5的标签的代码的简单介绍 HTML5标签的简介
2012/05/28 HTML / CSS
台湾时尚彩瞳专门店:imeime
2019/08/16 全球购物
介绍一下Linux文件的记录形式
2013/09/29 面试题
周年庆典邀请函范文
2014/01/23 职场文书
任命书模板
2014/06/04 职场文书
2016年端午节寄语
2015/12/04 职场文书