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代码真的很爽
Aug 26 Python
初学Python函数的笔记整理
Apr 07 Python
初步解析Python下的多进程编程
Apr 28 Python
python同时给两个收件人发送邮件的方法
Apr 30 Python
在Django的URLconf中使用命名组的方法
Jul 18 Python
Python 模块EasyGui详细介绍
Feb 19 Python
Python实现的计算马氏距离算法示例
Apr 03 Python
解决Python3.5+OpenCV3.2读取图像的问题
Dec 05 Python
Python+OpenCV实现图像的全景拼接
Mar 05 Python
解决jupyter notebook 前面书写后面内容消失的问题
Apr 13 Python
Django怎么在admin后台注册数据库表
Nov 14 Python
python爬虫利用代理池更换IP的方法步骤
Feb 21 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
综合图片计数器
2006/10/09 PHP
php中拷贝构造函数、赋值运算符重载
2012/07/25 PHP
精美漂亮的php分页类代码
2013/04/02 PHP
ThinkPHP3.2.2的插件控制器功能简述
2014/07/09 PHP
PHP常用正则表达式集锦
2014/08/17 PHP
PHP面向对象之领域模型+数据映射器实例(分析)
2017/06/21 PHP
laravel 获取某个查询的查询SQL语句方法
2019/10/12 PHP
javascript removeChild 使用注意事项
2009/04/11 Javascript
Jquey拖拽控件Draggable使用方法(asp.net环境)
2010/09/28 Javascript
从零开始学习jQuery (八) 插播:jQuery实施方案
2011/02/23 Javascript
JQuery表单验证插件EasyValidator用法分析
2014/11/15 Javascript
Javascript学习笔记之 函数篇(三) : 闭包和引用
2014/11/23 Javascript
js获取元素的标签名实现方法
2016/10/08 Javascript
Bootstrap基本插件学习笔记之Popover提示框(19)
2016/12/08 Javascript
原生js获取left值和top值的三种方法
2017/08/02 Javascript
prettier自动格式化去换行的实现代码
2020/08/25 Javascript
如何利用 JS 脚本实现网页全自动秒杀抢购功能
2020/10/12 Javascript
[02:04]2014DOTA2国际邀请赛 DK一个时代的落幕
2014/07/21 DOTA
python实现socket客户端和服务端简单示例
2014/02/24 Python
实例讲解Python中的私有属性
2014/08/21 Python
在Python中处理XML的教程
2015/04/29 Python
TensorFlow入门使用 tf.train.Saver()保存模型
2018/04/24 Python
在Python 中同一个类两个函数间变量的调用方法
2019/01/31 Python
Django框架中序列化和反序列化的例子
2019/08/06 Python
Python利用PyPDF2库获取PDF文件总页码实例
2020/04/03 Python
伦敦最有品味的百货:Liberty London
2016/11/12 全球购物
美国一家全面的在线零售鞋类公司:SHOEBACCA
2017/01/06 全球购物
美国男士西装打折店:Jos. A. Bank
2017/11/13 全球购物
北京SQL新华信咨询
2016/09/30 面试题
非功能性需求都包括哪些方面
2013/10/29 面试题
店长助理岗位职责
2013/12/13 职场文书
2014年秋季开学典礼主持词
2014/08/02 职场文书
2014年计划生育协会工作总结
2014/11/14 职场文书
2014年外贸业务员工作总结
2014/12/11 职场文书
给领导的感谢信范文
2015/01/23 职场文书
2015年世界急救日宣传活动方案
2015/05/06 职场文书