在我们使用Selenium Python制作自动爬虫和 页自动测试的时候,通常会遇到弹出新的窗体或对话框的时候,此时你捕获的窗体已经被打断,从而干扰你的爬虫。
那怎么解决这个问题呢/span>
本篇文章主要记录两段代码解决这类问题:
第一个是click()函数点击超链接后,需要捕获弹出新窗体的信息,此时需要调用switch_to_window()函数切换窗体,再捕获新的数据;
第二个是click()函数点击超链接后,弹出登录的对话框,比如百度首页登录,此时需要调用switch_to_alert()函数获取该alert对象。
文章主要是结合实际问题进行叙述,内容比较基础,希望对您有所帮助,如果存在错误或不足之处,还请海涵。更多爬虫主题参考我的专栏:http://blog.csdn.net/column/details/eastmount-spider.html
一. Switch_to_window函数实现窗体切换
这里使用该方法实现获取CSDN知识库的关键词的标题及超链接信息,因为它是_blank弹出新窗体,再获取弹出窗体的技术介绍。需要注意每次窗口句柄移动都需要重新定位它们的主窗体。
核心代码:
步骤如下:
1.首先,current_window_handle获取当前首页窗体并保存;
2.然后调用find_elements_by_xpath()获取首页多个关键词超链接(多个<li>),for循环访问;
3.在循环中点击超链接,弹出新的窗体,循环找到不是首页窗体的,调用switch_to_window进行跳转;
4.爬取新窗体关键词的介绍信息,位于div[@class=’coltop clearfix’]/div[2]下;
5.关闭当前窗体,重新返回首页窗体的超链接,循环执行3-5步骤。
部分输出如下所示:
CSDN知识库如下图所示,首页显示了多个技术的关注信息及资源数量。
二. Switch_to_alert函数捕获弹出对话框
注意:一定不要尝试该方法登陆百度、新浪、淘宝这些 站后爬取数据,账 可能被永久封 的。
比如百度首页,点击登录界面会弹出对话框如下图所示:
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!