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 相关文章推荐
Windows下Eclipse+PyDev配置Python+PyQt4开发环境
May 17 Python
python实现音乐下载器
Apr 15 Python
python3.5绘制随机漫步图
Aug 27 Python
python中类的属性和方法介绍
Nov 27 Python
对Python 多线程统计所有csv文件的行数方法详解
Feb 12 Python
python dlib人脸识别代码实例
Apr 04 Python
python GUI库图形界面开发之PyQt5单行文本框控件QLineEdit详细使用方法与实例
Feb 27 Python
Python之关于类变量的两种赋值区别详解
Mar 12 Python
150行Python代码实现带界面的数独游戏
Apr 04 Python
如何基于python对接钉钉并获取access_token
Apr 21 Python
详解如何在PyCharm控制台中输出彩色文字和背景
Aug 17 Python
python中xlutils库用法浅析
Dec 29 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/02 星际争霸
iis6+javascript Add an Extension File
2007/06/13 Javascript
基于jquery的blockui插件显示弹出层
2011/04/14 Javascript
解读JavaScript代码 var ie = !-[1,] 最短的IE判定代码
2011/05/28 Javascript
JavaScript 高级篇之函数 (四)
2012/04/07 Javascript
多种方法判断Javascript对象是否存在
2013/09/22 Javascript
JavaScript数组常用方法
2015/03/02 Javascript
js实现刷新iframe的方法汇总
2015/04/27 Javascript
js生成验证码并直接在前端判断
2015/05/15 Javascript
JQuery控制Radio选中方法分析
2015/05/29 Javascript
15位和18位身份证JS校验的简单实例
2016/07/18 Javascript
js事件驱动机制 浏览器兼容处理方法
2016/07/23 Javascript
js内置对象处理_打印学生成绩单的简单实现
2016/09/24 Javascript
Angular4学习笔记之实现绑定和分包
2017/08/01 Javascript
Vue v2.5 调整和更新不完全问题
2017/10/24 Javascript
js打开word文档预览操作示例【不是下载】
2019/05/23 Javascript
jquery css实现流程进度条
2020/03/26 jQuery
jquery实现有过渡效果的tab切换
2020/07/17 jQuery
JavaScript实现HTML导航栏下拉菜单
2020/11/25 Javascript
Python 自动登录淘宝并保存登录信息的方法
2019/09/04 Python
python 异步async库的使用说明
2020/05/04 Python
python关于倒排列的知识点总结
2020/10/13 Python
美国标志性加大尺码时装品牌:Ashley Stewart
2016/12/15 全球购物
竞聘演讲稿范文
2014/01/12 职场文书
小学生中国梦演讲稿
2014/04/23 职场文书
高中课程设置方案
2014/05/28 职场文书
项目经理任命书
2014/06/04 职场文书
最美孝心少年事迹材料
2014/08/15 职场文书
竞选学习委员演讲稿
2014/09/01 职场文书
本科毕业论文导师评语
2014/12/31 职场文书
Python数据清洗工具之Numpy的基本操作
2021/04/22 Python
django如何自定义manage.py管理命令
2021/04/27 Python
秀!学妹看见都惊呆的Python小招数!【详细语言特性使用技巧】
2021/04/27 Python
Python机器学习之KNN近邻算法
2021/05/14 Python
php实现自动生成验证码的实例讲解
2021/11/17 PHP
提高系统的吞吐量解决数据库重复写入问题
2022/04/23 MySQL