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实现将英文单词表示的数字转换成阿拉伯数字的方法
Jul 02 Python
django开发之settings.py中变量的全局引用详解
Mar 29 Python
Windows系统下多版本pip的共存问题详解
Oct 10 Python
分享Pycharm中一些不为人知的技巧
Apr 03 Python
python opencv读mp4视频的实例
Dec 07 Python
对numpy下的轴交换transpose和swapaxes的示例解读
Jun 26 Python
Django框架中序列化和反序列化的例子
Aug 06 Python
Python3爬虫发送请求的知识点实例
Jul 30 Python
pycharm如何使用anaconda中的各种包(操作步骤)
Jul 31 Python
Python接收手机短信的代码整理
Aug 02 Python
Python+Selenium随机生成手机验证码并检查页面上是否弹出重复手机号码提示框
Sep 21 Python
pytorch中F.avg_pool1d()和F.avg_pool2d()的使用操作
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
Zend studio for eclipse中使php可以调用mysql相关函数的设置方法
2008/10/13 PHP
PHP static局部静态变量和全局静态变量总结
2014/03/02 PHP
Yii2.0 模态弹出框+ajax提交表单
2016/05/22 PHP
PHP利用超级全局变量$_POST来接收表单数据的实例
2016/11/05 PHP
PHP简单实现循环链表功能示例
2017/11/10 PHP
Laravel基础_关于view共享数据的示例讲解
2019/10/14 PHP
10款非常有用的 Ajax 插件分享
2012/03/14 Javascript
浏览器解析js生成的html出现样式问题的解决方法
2012/04/16 Javascript
单击浏览器右上角的X关闭窗口弹出提示的小例子
2013/06/12 Javascript
javascript实现十六进制颜色值(HEX)和RGB格式相互转换
2014/06/20 Javascript
jQuery实现信息提示框(带有圆角框与动画)效果
2015/08/07 Javascript
jq实现左滑显示删除按钮,点击删除实现删除数据功能(推荐)
2016/08/23 Javascript
JavaScript lodash常见用法系列小结
2016/08/24 Javascript
js实现省份下拉菜单效果
2017/02/15 Javascript
JavaScript实现的原生态兼容IE6可调可控滚动文字功能详解
2017/09/19 Javascript
Vue2仿淘宝实现省市区三级联动
2020/04/15 Javascript
vue通信方式EventBus的实现代码详解
2019/06/10 Javascript
[01:14:41]DOTA2-DPC中国联赛定级赛 iG vs Magma BO3第一场 1月8日
2021/03/11 DOTA
pandas中的series数据类型详解
2019/07/06 Python
Python中顺序表原理与实现方法详解
2019/12/03 Python
python实现人工蜂群算法
2020/09/18 Python
CSS3中颜色线性渐变实战
2015/07/18 HTML / CSS
北美三大旅游网站之一:Travelocity加拿大
2016/08/20 全球购物
俄罗斯珠宝市场的领导者之一:Бронницкий ювелир
2019/10/02 全球购物
结构工程研究生求职信
2013/10/13 职场文书
公司人力资源的自我评价
2014/01/02 职场文书
上课睡觉检讨书
2014/01/28 职场文书
个性与发展自我评价
2014/02/11 职场文书
关于元旦的广播稿
2014/02/16 职场文书
劳资协议书范本
2014/04/23 职场文书
做一个有道德的人活动方案
2014/08/25 职场文书
学位证书委托书
2014/09/30 职场文书
党的群众路线教育实践活动个人批评与自我批评
2014/10/16 职场文书
2015年春训学习心得体会范文
2015/03/09 职场文书
敬老院志愿者活动总结
2015/05/06 职场文书
团队拓展训练感想
2015/08/07 职场文书