您的位置:首页 > 编程语言 > Python开发

Python动态网页爬虫技巧Selenium(一)

2018-02-08 17:34 597 查看

implicitly_wait() 跟 WebdriverWait()的区别

相同点:

这两个东西,都是为了在测试网页的时候进行等待的

一方面是都可以完成对于动态数据的等待和爬取。(都是一旦完成就直接溜掉~)

不同点:

前者是隐式等待,后者是显式等待。可能有人要问区别了。区别很简单。implicityly_wait()只需要使用一次,之后关于这个DOM文档树(好像是这个中文),中的任何一个元素,都会有这样的一个隐式等待。但是对于后者,就是每次使用的时候都需要自己再设置一次时间。

后者使用更为灵活一些,可以配合selenium自身的很多库来进行设置,前者就比较简单,如果没有什么特别的要求的话,用前面的那种就可以了~

下面也展示两者的使用方法:

隐式

from selenium import webdriver

if __name__ == '__main__':
dr = webdriver.Chrome()
dr.get("http://www.baidu.com")
dr.implicitly_wait(10)  # 这里~
element = dr.find_element_by_id("su")
print(element)
dr.quit()
pass


显式(配合多种库一起用,更灵活,也更麻烦)

from selenium import webdriver
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait

if __name__ == '__main__':
dr = webdriver.Chrome()
dr.get("http://www.baidu.com")
wait = WebDriverWait(dr, 10)  # 设置某个空间等待10秒这个事件
element = wait.until(EC.element_to_be_clickable((By.ID, "su")))  # 直到检测到某个事件前一直等待
print(element)
dr.quit()
pass
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: