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连接oracle数据库实例
Oct 17 Python
Python使用Flask框架同时上传多个文件的方法
Mar 21 Python
Python中使用语句导入模块或包的机制研究
Mar 30 Python
python爬虫爬取快手视频多线程下载功能
Feb 28 Python
Python实现Dijkstra算法
Oct 17 Python
Python matplotlib通过plt.scatter画空心圆标记出特定的点方法
Dec 13 Python
解析Python的缩进规则的使用
Jan 16 Python
python 使用pandas计算累积求和的方法
Feb 08 Python
对Python中一维向量和一维向量转置相乘的方法详解
Aug 26 Python
python函数装饰器之带参数的函数和带参数的装饰器用法示例
Nov 06 Python
Python进程池Pool应用实例分析
Nov 27 Python
python tkinter Entry控件的焦点移动操作
May 22 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中通过正则表达式下载内容中的远程图片的函数代码
2012/01/10 PHP
PHP面向对象三大特点学习(充分理解抽象、封装、继承、多态)
2012/05/07 PHP
php 验证码(倾斜,正弦干扰线,黏贴,旋转)
2013/06/29 PHP
ThinkPHP模板循环输出Volist标签用法实例详解
2016/03/23 PHP
[原创]PHP实现生成vcf vcard文件功能类定义与使用方法详解【附demo源码下载】
2017/09/02 PHP
让广告代码不再影响你的网页加载速度
2006/07/07 Javascript
理解Javascript_10_对象模型
2010/10/16 Javascript
js使用递归解析xml
2014/12/12 Javascript
JavaScript中的console.dir()函数介绍
2014/12/29 Javascript
jquery 动态合并单元格的实现方法
2016/08/26 Javascript
javascript 解决浏览器不支持的问题
2016/09/24 Javascript
vue不通过路由直接获取url中参数的方法示例
2017/08/24 Javascript
bootstrap时间控件daterangepicker使用方法及各种小bug修复
2017/10/25 Javascript
jQuery实现适用于移动端的跑马灯抽奖特效示例
2019/01/18 jQuery
vue+vuex+json-seiver实现数据展示+分页功能
2019/04/11 Javascript
NodeJs 模仿SIP话机注册的方法
2019/06/21 NodeJs
vue+element UI实现树形表格
2020/12/29 Vue.js
Python语言技巧之三元运算符使用介绍
2013/03/04 Python
Python使用Matplotlib实现雨点图动画效果的方法
2017/12/23 Python
python通过getopt模块如何获取执行的命令参数详解
2017/12/29 Python
python解析html提取数据,并生成word文档实例解析
2018/01/22 Python
Python倒排索引之查找包含某主题或单词的文件
2019/11/13 Python
在python shell中运行python文件的实现
2019/12/21 Python
Python验证码截取识别代码实例
2020/05/16 Python
python+playwright微软自动化工具的使用
2021/02/02 Python
Python Spyder 调出缩进对齐线的操作
2021/02/26 Python
HTML5微信播放全屏问题的解决方法
2017/03/09 HTML / CSS
营业经理岗位职责
2013/11/10 职场文书
公司任命书范本
2014/06/04 职场文书
小学生志愿者活动方案
2014/08/23 职场文书
检察机关个人对照检查材料
2014/09/15 职场文书
学生未请假就回家检讨书
2014/09/22 职场文书
2014年优秀党员材料
2014/12/18 职场文书
学习杨善洲同志先进事迹心得体会
2016/01/23 职场文书
七年级作文(600字3篇)
2019/09/24 职场文书
使用python求解迷宫问题的三种实现方法
2022/03/17 Python