implicitly_wait() 跟 WebdriverWait()的区别
相同点:这两个东西,都是为了在测试网页的时候进行等待的一方面是都可以完成对于动态数据的等待和爬取。(都是一旦完成就直接溜掉~)不同点:
前者是隐式等待,后者是显式等待。可能有人要问区别了。区别很简单。implicityly_wait()只需要使用一次,之后关于这个DOM文档树(好像是这个中文),中的任何一个元素,都会有这样的一个隐式等待。但是对于后者,就是每次使用的时候都需要自己再设置一次时间。后者使用更为灵活一些,可以配合selenium自身的很多库来进行设置,前者就比较简单,如果没有什么特别的要求的话,用前面的那种就可以了~
下面也展示两者的使用方法:
隐式from selenium import webdriverif __name__ == '__main__':dr = webdriver.Chrome()dr.get("")dr.implicitly_wait(10) # 这里~element = dr.find_element_by_id("su")print(element)dr.quit()pass
显式(配合多种库一起用,更灵活,也更麻烦)
from selenium import webdriverfrom selenium.webdriver.support import expected_conditions as ECfrom mon.by import Byfrom selenium.webdriver.support.ui import WebDriverWaitif __name__ == '__main__':dr = webdriver.Chrome()dr.get("")wait = WebDriverWait(dr, 10) # 设置某个空间等待10秒这个事件element = wait.until(EC.element_to_be_clickable((By.ID, "su"))) # 直到检测到某个事件前一直等待print(element)dr.quit()pass
如果觉得《Python动态网页爬虫技巧Selenium(一)》对你有帮助,请点赞、收藏,并留下你的观点哦!