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 14 Python
Python读大数据txt
Mar 28 Python
利用python获取Ping结果示例代码
Jul 06 Python
Python使用pickle模块存储数据报错解决示例代码
Jan 26 Python
python使用webdriver爬取微信公众号
Aug 31 Python
Django框架的中的setting.py文件说明详解
Oct 15 Python
python实现文件助手中查看微信撤回消息
Apr 29 Python
pygame库实现移动底座弹球小游戏
Apr 14 Python
tensorflow将图片保存为tfrecord和tfrecord的读取方式
Feb 17 Python
使用 pytorch 创建神经网络拟合sin函数的实现
Feb 24 Python
python 利用zmail库发送邮件
Sep 11 Python
python保存图片的四个常用方法
Feb 28 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基于ICU扩展intl快速实现汉字转拼音及按拼音首字母分组排序的方法
2017/05/03 PHP
javascript 控制 html元素 显示/隐藏实现代码
2009/09/01 Javascript
js键盘上下左右键怎么触发function(实例讲解)
2013/12/14 Javascript
jquery toolbar与网页浮动工具条具体实现代码
2014/01/12 Javascript
jquery选择器大全 全面详解jquery选择器
2014/03/06 Javascript
js如何判断用户是在PC端和还是移动端访问
2014/04/24 Javascript
javascript版的in_array函数(判断数组中是否存在特定值)
2014/05/09 Javascript
jQuery垂直多级导航菜单代码分享
2015/08/18 Javascript
JavaScript实现上下浮动的窗口效果代码
2015/10/12 Javascript
Three.js学习之几何形状
2016/08/01 Javascript
electron中使用bootstrap的示例代码
2018/11/06 Javascript
如何阻止小程序遮罩层下方图层滚动
2019/09/05 Javascript
使用原生JS实现火锅点餐小程序(面向对象思想)
2019/12/10 Javascript
[08:07]DOTA2每周TOP10 精彩击杀集锦vol.8
2014/06/25 DOTA
[55:45]DOTA2上海特级锦标赛D组败者赛 Liquid VS COL第一局
2016/02/28 DOTA
Python lambda和Python def区别分析
2014/11/30 Python
python 简单的多线程链接实现代码
2016/08/28 Python
浅谈Python数据类型判断及列表脚本操作
2016/11/04 Python
Python使用asyncio包处理并发详解
2017/09/09 Python
Python格式化日期时间操作示例
2018/06/28 Python
linux环境中没有网络怎么下载python
2019/07/07 Python
python GUI库图形界面开发之PyQt5信号与槽机制、自定义信号基础介绍
2020/02/25 Python
Python依赖包迁移到断网环境操作
2020/07/13 Python
python爬虫请求头设置代码
2020/07/28 Python
理肤泉美国官网:La Roche-Posay
2018/01/17 全球购物
一句话工作感言
2014/03/01 职场文书
行政部经理助理岗位职责
2014/06/15 职场文书
个人求职自荐信范文
2014/06/20 职场文书
学党史心得体会
2014/09/05 职场文书
公司捐书倡议书
2015/04/27 职场文书
女性健康讲座主持词
2015/07/04 职场文书
2016年“5.12”护士节慰问信
2015/11/30 职场文书
筑梦中国心得体会
2016/01/18 职场文书
《敬重卑微》读后感3篇
2019/11/26 职场文书
浅谈MySQL之浅入深出页原理
2021/06/23 MySQL
CSS link与@import的区别和用法解析
2023/05/07 HTML / CSS