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基础教程之popen函数操作其它程序的输入和输出示例
Feb 10 Python
Python中__new__与__init__方法的区别详解
May 04 Python
给你选择Python语言实现机器学习算法的三大理由
Nov 15 Python
Python实现PS图像调整黑白效果示例
Jan 25 Python
selenium + python 获取table数据的示例讲解
Oct 13 Python
python使用matplotlib画柱状图、散点图
Mar 18 Python
python3.6 如何将list存入txt后再读出list的方法
Jul 02 Python
springboot配置文件抽离 git管理统 配置中心详解
Sep 02 Python
Python关于__name__属性的含义和作用详解
Feb 19 Python
解决Keras 自定义层时遇到版本的问题
Jun 16 Python
为什么python比较流行
Jun 19 Python
python 三种方法提取pdf中的图片
Feb 07 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 MySQL应用中使用XOR运算加密算法分享
2011/08/28 PHP
phpadmin如何导入导出大数据文件及php.ini参数修改
2013/02/18 PHP
探讨:php中在foreach中使用foreach ($arr as &$value) 这种类型的解释
2013/06/24 PHP
php实现源代码加密的方法
2015/07/11 PHP
PHP实现的防止跨站和xss攻击代码【来自阿里云】
2018/01/29 PHP
html读出文本文件内容
2007/01/22 Javascript
使用jQuery清空file文件域的解决方案
2013/04/12 Javascript
laytpl 精致巧妙的JavaScript模板引擎
2014/08/29 Javascript
2014 HTML5/CSS3热门动画特效TOP10
2014/12/07 Javascript
JavaScript修改浏览器tab标题小技巧
2015/01/06 Javascript
js中跨域方法原理详解
2015/07/19 Javascript
JavaScript实现跑马灯抽奖活动实例代码解析与优化(二)
2016/02/16 Javascript
Bootstrap Chart组件使用教程
2016/04/28 Javascript
微信小程序 HTTPS报错整理常见问题及解决方案
2016/12/14 Javascript
详解Vue2.x-directive的学习笔记
2017/07/17 Javascript
webpack 打包压缩js和css的方法示例
2018/03/20 Javascript
Vue仿支付宝支付功能
2018/05/25 Javascript
vue实现的树形结构加多选框示例
2019/02/02 Javascript
jQuery选择器之基本选择器用法实例分析
2019/02/19 jQuery
vue实现文件上传读取及下载功能
2020/11/17 Javascript
Python实现包含min函数的栈
2016/04/29 Python
Django实现微信小程序的登录验证功能并维护登录态
2019/07/04 Python
Python 实现数据结构-循环队列的操作方法
2019/07/17 Python
python序列化与数据持久化实例详解
2019/12/20 Python
Python实现初始化不同的变量类型为空值
2020/06/02 Python
基于Django集成CAS实现流程详解
2020/11/28 Python
Python使用Pygame绘制时钟
2020/11/29 Python
canvas烟花特效锦集
2018/01/17 HTML / CSS
英国首屈一指的票务公司:See Tickets
2019/05/11 全球购物
如何处理简单的PHP错误
2015/10/14 面试题
Android面试宝典
2013/08/06 面试题
工程项目经理岗位职责
2013/12/15 职场文书
物理教学随笔感言
2014/02/22 职场文书
《梅兰芳学艺》教学反思
2014/02/24 职场文书
中队活动总结
2014/08/27 职场文书
合作经营协议书范本
2014/09/16 职场文书