在上一章python 爬虫前奏四 Selenium库的使用中简单的提过一句webdriver等待,但是这个是需要详细了解的
1、强制等待sleep
import time
sleep(2) #等待2秒
由python的time包提供,但是使用缺点很大,因为sleep是整个进程休眠阻塞
2、隐式等待:implicitly_wait()
driver.implicitly_wait(10) #隐式等待10秒
由webdriver提供的方法,一旦设置,这个隐式等待会在WebDriver对象实例的整个生命周期起作用,它不针对某一个元素,是全局元素等待,即在定位元素时,需要等待页面全部元素加载完成,才会执行下一个语句。如果超出了设置时间的则抛出异常。
缺点:当页面某些js无法加载,但是想找的元素已经出来了,它还是会继续等待,直到页面加载完成(浏览器标签左上角圈圈不再转),才会执行下一句。某些情况下会影响脚本执行速度。
3、显示等待:WebDriverWait()
from selenium.webdriver.support.wait import WebDriverWait
WebDriverWait(driver,timeout,poll_frequency=0.5,ignored_exceptions=None)
#driver:浏览器驱动
#timeout:最长超时时间,默认以秒为单位
#poll_frequency:检测的间隔步长,默认为0.5s
#ignor