动态网页 —— selenium+案例

本文深入探讨selenium库在处理动态网页时如何切换frame,通过实例爬取qq邮箱,阐述switch_to.frame(), switch_to.default_content()和switch_to.window()的用法,并强调了窗口切换在动态网页抓取中的重要性。最后,说明了数据存储到数据库的步骤,提醒注意保护隐私。" 111534950,10293646,axios教程:安装与使用示例,"['前端开发', 'JavaScript', 'Vue', 'axios']
摘要由CSDN通过智能技术生成

在上一次博客动态网页——selenium基础中我们在最后有提到frame的窗口切换,但是并没有细讲,所以今天就是用selenium来爬取一个qq邮箱,详细讲解selenium库@中frame的运用。


1、使用selenium总是出现定位错误?


在这里插入图片描述

很多人在动态网页爬取的时候使用selenium库的时候会遇到在这里插入图片描述
这种错误,可是反复检查网页源代码,发现元素明明就在那里,用firebug也可以看到 ,但是就是不可以去定位它,这个时候我们就要考虑一下我们的窗口有没有切换了!
因为webDriver只能在一个页面上对元素进行识别和定位,对于frame/iframe表单内嵌页面上的元素无法直接定位。


2、切换——switch_to.frame()


在这里插入图片描述

 driver=webdriver.Chrome("F:\..\chromedriver.exe")
 driver.switch_to.frame(reference)

reference 是传入的参数,switch_to.frame()是默认的取id和name属性。
并不是每一个frame/iframe表单都有id和name属性,那么这时我们可以用什么?

在这里插入图片描述

1,用frame的index来定位,从0开始

driver.switch_to.frame(0)  

2,WebElement对象,直接用selenium定位元素

#如使用find_element_by_tag_name()
driver.switch_to.frame(driver.find_element_by_tag_name("iframe")) 

3、切换——switch_to.default_content()


在这里插入图片描述

我们切换到frame表单中就只能对表单中的元素进行识别和操作,要想对主界面的元素进行识别和定位,是不可以的。所以这个时候我们就要切换回主文档。也称释放frame。

driver.switch_to.default_content()

4、切换——switch_to.window()


在这里插入图片描述

如果获取新窗口的内容 switch_to.window(handle) 来进行窗口切换, 可以从window_handles集中进行遍历,结合判断进行。handle是窗口的唯一标识符相当于网页的ID。

 driver=webdriver.Chrome("F:\..\chromedriver.exe")
 for handle in driver.window_handles:
 	print(handle)
 	driver.switch_to.window(handle)

5、案例——爬取qq_邮箱


在这里插入图片描述

我们在上一篇博客刚讲过,qq邮箱的登录,所以这次的案例我们也还是爬取qq邮箱中的信息吧。

绝对不是因为我懒得再找案例👀
在这里插入图片描述

emmm这次的案例几乎是没有什么新知识点的,要是说有的话,就是我之前没有出过关于Xpath的解析,后面我再出一篇关于Xpath解析的好了。
本次呢,我是直接保存到数据库中的。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值