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基于csv模块实现读取与写入csv数据的方法
Jan 18 Python
python pandas.DataFrame选取、修改数据最好用.loc,.iloc,.ix实现
Jun 11 Python
使用Python写一个量化股票提醒系统
Aug 22 Python
python实现简单登陆系统
Oct 18 Python
10 分钟快速入门 Python3的教程
Jan 29 Python
Python在cmd上打印彩色文字实现过程详解
Aug 07 Python
Python 仅获取响应头, 不获取实体的实例
Aug 21 Python
Python基于Dlib的人脸识别系统的实现
Feb 26 Python
OpenCV Python实现拼图小游戏
Mar 23 Python
python网络编程socket实现服务端、客户端操作详解
Mar 24 Python
Python动态强类型解释型语言原理解析
Mar 25 Python
Python-opencv实现红绿两色识别操作
Jun 04 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 cout<<的一点看法
2010/01/24 PHP
ajax php传递和接收变量实现思路及代码
2012/12/19 PHP
php生成图形验证码几种方法小结
2013/08/15 PHP
PHP滚动日志的代码实现
2015/06/10 PHP
详解PHP实现定时任务的五种方法
2016/07/25 PHP
php 运算符与表达式详细介绍
2016/11/30 PHP
WHOOPS PHP调试库的使用
2017/09/29 PHP
JQuery处理json与ajax返回JSON实例代码
2014/01/03 Javascript
JS中判断JSON数据是否存在某字段的方法
2014/03/07 Javascript
jQuery中:last-child选择器用法实例
2014/12/31 Javascript
JS弹性运动实现方法分析
2016/12/15 Javascript
深入理解JavaScript中的尾调用(Tail Call)
2017/02/07 Javascript
js实现简单的二级联动效果
2017/03/09 Javascript
基于VUE实现的九宫格抽奖功能
2018/09/30 Javascript
angularJS1 url中携带参数的获取方法
2018/10/09 Javascript
JavaScript的词法结构精华篇
2018/10/17 Javascript
js获取form表单中name属性的值
2019/02/27 Javascript
jQuery轮播图功能制作方法详解
2019/12/03 jQuery
vue学习笔记之过滤器的基本使用方法实例分析
2020/02/01 Javascript
[44:01]2018DOTA2亚洲邀请赛3月30日 小组赛B组 EG VS paiN
2018/03/31 DOTA
python paramiko实现ssh远程访问的方法
2013/12/03 Python
Python2和Python3中print的用法示例总结
2017/10/25 Python
Python将多份excel表格整理成一份表格
2018/01/03 Python
在python中将字符串转为json对象并取值的方法
2018/12/31 Python
ERLANG和PYTHON互通实现过程详解
2019/07/05 Python
对YOLOv3模型调用时候的python接口详解
2019/08/26 Python
python GUI库图形界面开发之PyQt5动态(可拖动控件大小)布局控件QSplitter详细使用方法与实例
2020/03/06 Python
keras model.fit 解决validation_spilt=num 的问题
2020/06/19 Python
CSS3制作日历实现代码
2012/01/21 HTML / CSS
乐天旅游香港网站:日本饭店预订
2017/11/29 全球购物
导游的职业规划书范文
2013/12/27 职场文书
单位法定代表人授权委托书
2014/09/20 职场文书
2015年新教师工作总结
2015/04/28 职场文书
亲戚关系证明
2015/06/24 职场文书
学术会议领导致辞
2015/07/29 职场文书
Python按顺序遍历并读取文件夹中文件
2022/04/29 Python