selenium多窗口切换抓取内容(新闻抓取案例二)

本文介绍如何使用Selenium在Python中处理新窗口的打开和内容抓取,以人民网新闻为例。通过XPath定位到新闻链接,遍历并点击每个链接,新开窗口后获取窗口句柄,然后切换窗口进行内容抓取。最后,返回主窗口并提供完整代码示例。
摘要由CSDN通过智能技术生成

今天做的练习是抓取人民网上面的新闻,和第一篇笔记不同的是这次点击链接是在新窗口打开,涉及到切换窗口抓取的问题。xpath方法是定位到具体层级的,不能跳跃地忽略父从爷定位到孙。由于这次的案例是a标签被包裹在不同的父div中,所以可以用*表示任意父div,再定位到后面的p/strong/a里:

links=driver.find_elements_by_xpath("/html/body/div[14]/div[1]/div/*/p/strong/a")

这里抓取出来的a标签内的元素组成了列表links,列表不能点击,但是列表里的单个元素可以,所以用遍历循环的方法将列表元素逐个赋给link

link=links[i]

这里的link是单一元素,所以可以click了。这里终于解决了第一篇笔记里面遇到的问题,当时发现抓取到所有的链接组成列表links,死活不能用click(因为列表理所当然是不能click的啊),后来只能用get_attribute(href)的方法获取链接,但这里获取到的链接是字符串,还得用get(url)在原窗口打开。现在发现了只需要定位到包裹href链接的a标签,就能通过遍历循环把列表links逐一提取点击:

link.click() 

打开了新窗口后,获取全部窗口的句柄(即系统给窗口的编码,如:你正在操作142号窗口)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值