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实现的Google IP 可用性检测脚本
Apr 23 Python
opencv改变imshow窗口大小,窗口位置的方法
Apr 02 Python
Python unittest模块用法实例分析
May 25 Python
python 用lambda函数替换for循环的方法
Jun 09 Python
python数据批量写入ScrolledText的优化方法
Oct 11 Python
Python设计模式之状态模式原理与用法详解
Jan 15 Python
详解python 模拟豆瓣登录(豆瓣6.0)
Apr 18 Python
Django网络框架之创建虚拟开发环境操作示例
Jun 06 Python
python+django+selenium搭建简易自动化测试
Aug 19 Python
详解python命令提示符窗口下如何运行python脚本
Sep 11 Python
仅用几行Python代码就能复制她的U盘文件?
Jun 26 Python
pandas中pd.groupby()的用法详解
Jun 16 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
深入apache host的配置详解
2013/06/09 PHP
php定义参数数量可变的函数用法实例
2015/03/16 PHP
php中二分法查找算法实例分析
2016/09/22 PHP
JavaScript CSS菜单功能 改进版
2008/12/20 Javascript
JavaScript delete 属性的使用
2009/10/08 Javascript
使用JQuery和CSS模拟超链接的用户单击事件的实现代码
2012/05/23 Javascript
js 操作select和option常用代码整理
2012/12/13 Javascript
js获取控件位置以及不同浏览器中的差别介绍
2013/08/08 Javascript
yarn与npm的命令行小结
2016/10/20 Javascript
bootstrap flask登录页面编写实例
2016/11/01 Javascript
JS中使用textPath实现线条上的文字
2017/12/25 Javascript
JS实现不用中间变量temp 实现两个变量值得交换方法
2018/02/04 Javascript
vue开发简单上传图片功能
2020/06/30 Javascript
[05:24]TI9采访——教练
2019/08/24 DOTA
python实现的udp协议Server和Client代码实例
2014/06/04 Python
Python with用法实例
2015/04/14 Python
Python实现快速多线程ping的方法
2015/07/15 Python
Python 字符串、列表、元组的截取与切片操作示例
2019/09/17 Python
Html5 video标签视频的最佳实践
2020/02/26 HTML / CSS
服装公司总经理岗位职责
2013/11/30 职场文书
自行车广告词大全
2014/03/21 职场文书
函授本科个人自我鉴定
2014/03/25 职场文书
开门红主持词
2014/04/02 职场文书
QQ空间主人寄语大全
2014/04/12 职场文书
大一新生期末自我评价
2014/09/12 职场文书
物价局领导班子四风问题整改措施
2014/10/26 职场文书
自我推荐信怎么写
2015/03/24 职场文书
施工安全保证书
2015/05/09 职场文书
有关保护环境的宣传标语100条
2019/08/07 职场文书
读《茶花女》有感:山茶花的盛开与凋零
2020/01/17 职场文书
了解Redis常见应用场景
2021/06/23 Redis
Node实现搜索框进行模糊查询
2021/06/28 Javascript
死磕 java同步系列之synchronized解析
2021/06/28 Java/Android
html5表单的required属性使用
2021/07/07 HTML / CSS
使用Oracle命令进行数据库备份与还原
2021/12/06 Oracle
Python语法学习之进程的创建与常用方法详解
2022/04/08 Python