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实现百度关键词排名查询
Mar 30 Python
详解python中executemany和序列的使用方法
Aug 12 Python
Python无损音乐搜索引擎实现代码
Feb 02 Python
Python常见内置高效率函数用法示例
Jul 31 Python
Python解决线性代数问题之矩阵的初等变换方法
Dec 12 Python
python celery分布式任务队列的使用详解
Jul 08 Python
python3 反射的四种基本方法解析
Aug 26 Python
浅谈Python中range与Numpy中arange的比较
Mar 11 Python
Python爬虫设置ip代理过程解析
Jul 20 Python
python ssh 执行shell命令的示例
Sep 29 Python
python读写数据读写csv文件(pandas用法)
Dec 14 Python
python爬虫利器之requests库的用法(超全面的爬取网页案例)
Dec 17 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/05/05 PHP
使用PHP编写的SVN类
2013/07/18 PHP
php实现斐波那契数列的简单写法
2014/07/19 PHP
MyEclipse常用配置图文教程
2014/09/11 PHP
php实现只保留mysql中最新1000条记录
2015/06/18 PHP
删除PHP数组中头部、尾部、任意元素的实现代码
2017/04/10 PHP
设置下载不需要倒计时cookie(倒计时代码)
2008/11/19 Javascript
JavaScript EasyPager 分页函数
2011/05/25 Javascript
将json对象转换为字符串的方法
2014/02/20 Javascript
AngularJS过滤器详解及示例代码
2016/08/16 Javascript
JavaScript用构造函数如何获取变量的类型名
2016/12/23 Javascript
jQuery实现Select下拉列表进行状态选择功能
2017/03/30 jQuery
JavaScript原生数组Array常用方法
2017/04/06 Javascript
浅谈angularjs中响应回车事件
2017/04/24 Javascript
浅谈Vue2.0父子组件间事件派发机制
2018/01/08 Javascript
jquery判断滚动条距离顶部的距离方法
2018/09/05 jQuery
Vuex的基本概念、项目搭建以及入坑点
2018/11/04 Javascript
谈谈node.js中的模块系统
2020/09/01 Javascript
Python正则表达式介绍
2012/08/06 Python
深入解析Python中的变量和赋值运算符
2015/10/12 Python
python解决Fedora解压zip时中文乱码的方法
2016/09/18 Python
基于python 爬虫爬到含空格的url的处理方法
2018/05/11 Python
对python tkinter窗口弹出置顶的方法详解
2019/06/14 Python
Python 读取有公式cell的结果内容实例方法
2020/02/17 Python
解决Jupyter notebook中.py与.ipynb文件的import问题
2020/04/21 Python
python Socket网络编程实现C/S模式和P2P
2020/06/22 Python
Python JSON常用编解码方法代码实例
2020/09/05 Python
澳大利亚拥有最好的家具和家居用品在线目的地:Nestz
2019/02/23 全球购物
大专生的学习自我评价
2013/12/04 职场文书
政风行风评议整改方案
2014/09/15 职场文书
2015年度校学生会工作总结报告
2015/05/23 职场文书
MySQL命令行操作时的编码问题详解
2021/04/14 MySQL
SpringBoot2 参数管理实践之入参出参与校验的方式
2021/06/16 Java/Android
Redis的字符串是如何实现的
2021/10/24 Redis
Python Pytorch查询图像的特征从集合或数据库中查找图像
2022/04/09 Python
PostgreSQL基于pgrouting的路径规划处理方法
2022/04/18 PostgreSQL