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中使用psutil查看内存占用的情况
Jun 11 Python
Python从ZabbixAPI获取信息及实现Zabbix-API 监控的方法
Sep 17 Python
python argparser的具体使用
Nov 10 Python
python 实现让字典的value 成为列表
Dec 16 Python
Python with语句和过程抽取思想
Dec 23 Python
Python3实现mysql连接和数据框的形成(实例代码)
Jan 17 Python
Tensorflow 1.0之后模型文件、权重数值的读取方式
Feb 12 Python
VSCode基础使用与VSCode调试python程序入门的图文教程
Mar 30 Python
keras Lambda自定义层实现数据的切片方式,Lambda传参数
Jun 11 Python
keras读取训练好的模型参数并把参数赋值给其它模型详解
Jun 15 Python
利用PyQt5+Matplotlib 绘制静态/动态图的实现代码
Jul 13 Python
Python 通过爬虫实现GitHub网页的模拟登录的示例代码
Aug 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查看session内容的函数
2008/08/27 PHP
解析wamp5下虚拟机配置文档
2013/06/27 PHP
PHP反射使用实例和PHP反射API的中文说明
2014/07/02 PHP
十大使用PHP框架的理由
2015/09/26 PHP
jqPlot 基于jquery的画图插件
2011/04/26 Javascript
Jquery.addClass始终无效原因分析
2013/09/08 Javascript
jQuery客户端分页实例代码
2013/11/18 Javascript
jQuery中not()方法用法实例
2015/01/06 Javascript
微信小程序实现多选功能
2018/11/04 Javascript
微信小程序自定义toast的实现代码
2018/11/16 Javascript
vue 使用async写数字动态加载效果案例
2020/07/18 Javascript
[31:55]完美世界DOTA2联赛循环赛 IO vs GXR BO2第一场 11.04
2020/11/05 DOTA
python登录QQ邮箱发信的实现代码
2013/02/10 Python
python字典序问题实例
2014/09/26 Python
python中利用Future对象回调别的函数示例代码
2017/09/07 Python
python 读取目录下csv文件并绘制曲线v111的方法
2018/07/06 Python
python 读取视频,处理后,实时计算帧数fps的方法
2018/07/10 Python
python程序变成软件的实操方法
2019/06/24 Python
Python函数中参数是传递值还是引用详解
2019/07/02 Python
Python字典添加,删除,查询等相关操作方法详解
2020/02/07 Python
Python面向对象程序设计之静态方法、类方法、属性方法原理与用法分析
2020/03/23 Python
python 等差数列末项计算方式
2020/05/03 Python
Django实现随机图形验证码的示例
2020/10/15 Python
香港No.1得奖零食网:香港零食大王
2016/07/22 全球购物
美体小铺加拿大官方网站:The Body Shop加拿大
2016/10/30 全球购物
美国最好的保健品打折网店:Swanson
2017/08/04 全球购物
英国音乐设备和乐器商店:Gear4music
2017/10/16 全球购物
在子网210.27.48.21/30种有多少个可用地址?分别是什么?
2014/07/27 面试题
教导处工作制度
2014/01/18 职场文书
奉献爱心演讲稿
2014/09/04 职场文书
金融专业银行实习证明模板
2014/11/28 职场文书
2016高考感言
2015/08/01 职场文书
煤矿隐患排查制度
2015/08/05 职场文书
完美解决golang go get私有仓库的问题
2021/05/05 Golang
一劳永逸彻底解决pip install慢的办法
2021/05/24 Python
浅谈自定义校验注解ConstraintValidator
2021/06/30 Java/Android