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 字符串中的字符倒转
Sep 06 Python
python实现根据图标提取分类应用程序实例
Sep 28 Python
Python实现的使用telnet登陆聊天室实例
Jun 17 Python
合并百度影音的离线数据( with python 2.3)
Aug 04 Python
Python中Iterator迭代器的使用杂谈
Jun 20 Python
分析python动态规划的递归、非递归实现
Mar 04 Python
浅谈Python中的bs4基础
Oct 21 Python
在PyCharm中控制台输出日志分层级分颜色显示的方法
Jul 11 Python
pytorch标签转onehot形式实例
Jan 02 Python
python 判断一组数据是否符合正态分布
Sep 23 Python
Django url 路由匹配过程详解
Jan 22 Python
Python使用Kubernetes API访问集群
May 30 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
40个迹象表明你还是PHP菜鸟
2008/09/29 PHP
基于pear auth实现登录验证
2010/02/26 PHP
Joomla开启SEF的方法
2016/05/04 PHP
php好代码风格的阶段性总结
2016/06/25 PHP
浅析PHP中的 inet_pton 网络函数
2019/12/16 PHP
Dojo 学习笔记入门篇 First Dojo Example
2009/11/15 Javascript
jQuery代码优化 事件委托篇
2011/11/01 Javascript
JavaScript中计算网页中某个元素的位置
2015/06/10 Javascript
JS实现网页标题随机显示名人名言的方法
2015/11/03 Javascript
微信小程序中实现一对多发消息详解及实例代码
2017/02/14 Javascript
使用Vue.js和Flask来构建一个单页的App的示例
2018/03/21 Javascript
深入理解Node module模块
2018/03/26 Javascript
小程序实现授权登陆的解决方案
2018/12/02 Javascript
Vue的click事件防抖和节流处理详解
2019/11/13 Javascript
vue开发中遇到的问题总结
2020/04/07 Javascript
python调用cmd命令行制作刷博器
2014/01/13 Python
python利用正则表达式排除集合中字符的功能示例
2017/10/10 Python
python爬虫获取新浪新闻教学
2018/12/23 Python
opencv实现静态手势识别 opencv实现剪刀石头布游戏
2019/01/22 Python
Pyqt5 实现跳转界面并关闭当前界面的方法
2019/06/19 Python
python+numpy按行求一个二维数组的最大值方法
2019/07/09 Python
Python中最好用的命令行参数解析工具(argparse)
2019/08/23 Python
python2和python3应该学哪个(python3.6与python3.7的选择)
2019/10/01 Python
Python3 Tkinkter + SQLite实现登录和注册界面
2019/11/19 Python
mac使用python识别图形验证码功能
2020/01/10 Python
python实现FTP文件传输的方法(服务器端和客户端)
2020/03/20 Python
Python可以实现栈的结构吗
2020/05/27 Python
Visual Studio Code搭建django项目的方法步骤
2020/09/17 Python
用css3实现当鼠标移进去时当前亮其他变灰效果
2014/04/08 HTML / CSS
俄罗斯眼镜网: optikaworld
2016/07/31 全球购物
Nike爱尔兰官方网站:Nike.com (IE)
2018/03/12 全球购物
台湾时尚彩瞳专门店:imeime
2019/08/16 全球购物
面向对象概念面试题(.NET)
2016/11/04 面试题
园林技术个人的自我评价
2014/02/15 职场文书
2014年高校辅导员工作总结
2014/12/09 职场文书
python基础之函数的定义和调用
2021/10/24 Python