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

本文详细介绍了在Selenium中使用隐式等待(implicitly_wait())与显式等待(WebDriverWait())的区别。隐式等待适用于整个浏览器会话,而显式等待则针对特定条件。文章通过示例代码展示了两种等待方式的具体应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

implicitly_wait() 跟 WebdriverWait()的区别
  • 相同点:
    1. 这两个东西,都是为了在测试网页的时候进行等待的
    2. 一方面是都可以完成对于动态数据的等待和爬取。(都是一旦完成就直接溜掉~)
  • 不同点:
    1. 前者是隐式等待,后者是显式等待。可能有人要问区别了。区别很简单。implicityly_wait()只需要使用一次,之后关于这个DOM文档树(好像是这个中文),中的任何一个元素,都会有这样的一个隐式等待。但是对于后者,就是每次使用的时候都需要自己再设置一次时间。
    2. 后者使用更为灵活一些,可以配合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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

gc.collect()

公众号“肥宅Sean”欢迎关注

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值