Selenium是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。他支持市场上绝对多数的浏览器。这个工具的主要功能包括:测试与浏览器的兼容性——测试你的应用程序看是否能够很好得工作在不同浏览器和操作系统之上。测试系统功能——创建回归测试检验软件功能和用户需求。支持自动录制动作和自动生成 .Net、Java、Perl等不同语言的测试脚本。
看了Selenium的简介有没有觉得它很牛呢?其实即使我们并非是做自动化测试的工作,学会这个软件也可以在生活中帮我们大忙。它除了用于自动化测试,还能用于爬虫上面。
接触过爬虫的小伙伴都知道静态网页是最好爬的。但是要是遇到动态加载,懒加载,js脚本加载的页面那就没那么好爬了。因为直接获取网站的时候,网页甚至没有打开。这时候用Selenium是一个非常正确的选择。
我们用Selenium只需要加个等待函数就行了。
方法一:
# 等待 3 秒
from time import sleep
sleep(3)
这是python本来就有的等待命令,无论如何都会等上3秒才会执行下一步。那么这个方法是有缺陷的。它会遇到两种问题。
问题一:要是等待了3秒,但是网站还是没有加载完,这样子继续执行就会因为取不到网页有的元素而报错。
问题二:当然我们可以直接固定5秒,10秒等待。不过这样子就会造成等待时间的浪费。
方法二:
driver.implicitly_wait(10)
上面的语句用的是selenium里面的方法,具体是每0.5秒执行一下寻找元素,要是找到那就直接不用等待。然后这里的10是最大的等待时间。
用implicitly_wait可以避免了等待时间的浪费。是更加科学的等待方式。
上面讲解相信大家很容易就能理解。有兴趣学完整地学习selenium的话,可以关注公众号:诗一样的代码,留言给我,我教你系统地学。