Python爬虫实现selenium处理iframe作用域问题
作者:Master先生 发布时间:2021-05-23 03:09:42
标签:selenium,iframe,作用域
项目场景:
在使用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()
执行结果:
很明显这并不是想要的结果。
原因分析:
当我们打开抓包工具定位到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()
查看运行结果:
来源:https://blog.csdn.net/weixin_45745344/article/details/112881984
0
投稿
猜你喜欢
- 下面代码写的是js验证检查输入的字符是否是全角的函数:效果演示:<script> function i
- 官方文档https://developers.weixin.qq.com/miniprogram/dev/framework/open-ab
- 最近需要将实验数据画图出来,由于使用python进行实验,自然使用到了matplotlib来作图。下面的代码可以作为画图的模板代码,代码中有
- 一、场景说明在面试接口自动化时,经常会问,其他接口调用的前提条件是当前用户必须是登录状态,如何处理接口依赖?在此之前我们介绍过session
- fileinput模块可以遍历文本文件的所有行.它的工作方式和readlines很类似,不同点在于,它不是将全部的行读到列表中而是创建了一个
- PL/SQL单行函数和组函数详解 函数是一种有零个或多个参数并且有一个返回值的程序。在SQL中Oracle内建了一系列函数,这些函数都可被称
- 最近社会猪可是火遍了大江南北,不蹭下热度可对不起它。见过手画的佩奇,见过用代码画的吗?没有?那就来看我大显身手。用python的turtle
- 第一步:登陆root用户。第二步:新建一个数据表,并且选好排序规则,此处我使用testtable。第三步:我们新建一个用户输入相关的账户名以
- 首先需要安装arrow库:pip install arrowArrow提供了一个合理的、人性化的方法来创建、操作、格式转换的日期,时间,和时
- 本文实例总结了Python列表list常用内建函数。分享给大家供大家参考,具体如下:>>> x = list(range(
- Python中可以使用 pickle 模块将对象转化为文件保存在磁盘上,在需要的时候再读取并还原。具体用法如下:pickle是Python库
- 前言Windows10 在 UWP 应用中支持亚克力画刷,可以在部件的底部绘制亚克力效果的背景图。下面我们使用 QLabel 来模拟这个磨砂
- 本文实例讲述了php+mysql开发的最简单在线题库。分享给大家供大家参考,具体如下:题库,对于教育机构,学校,在线教育,是很有必要的,网上
- 目录range函数zip() 函数其它内置函数数据类型转换相关内置函数变量相关函数数学相关函数进制相关函数高阶函数sorted(iterab
- (一)ts文件下载网页文件下载其实都可以通过requests.get以文件流的形式获取,并以字节的形式写入本地文件即可。代码如下:impor
- 问题说明最近在写爬虫,由于单个账号访问频率太高会被封,所以需要在爬虫执行一段时间间隔后自己循环切换账号所以就在想,有没有像单片机那样子设置一
- 如下所示:'''Created on 2018-4-20例子:每天凌晨3点执行func方法''
- 本文实例为大家分享了TensorFlow实现卷积神经网络的具体代码,供大家参考,具体内容如下代码(源代码都有详细的注释)和数据集可以在git
- 许多共享主机的服务提供商不允许运行你自己的服务进程,也不允许修改 httpd.conf 文件。 尽管如此,仍然有可能通过Web服务器产生的子
- 发帖或者回帖的时候,系统会提示银两或经验增加的效果,慢慢出现又慢慢消失,用于取代对话框的那种是如何实现的?用google的jquery ap