Python爬虫基础——selenium模块进阶(显示等待和隐式等待)

在用使用selenium模块模拟用户操作浏览器时,浏览器会对加载的网页用到所有的资源发送请求,然而网络堵塞或者服务器繁忙等原因会导致各个资源的加载进度不一致,如果在网上尚未完全加载时就进行标签定位等操作,有可能因为标签不存在而出错。为了解决这一问题,我们需要为程序设置演延时。可使用Python内置的time模块可以实现让程序等待指定的时间,但这种方法需要在网页为加载完毕的地方设置等待。为了简化代码,本次采用selenium模块中定义的两种等待方法:显示等待和隐式等待。

python 复制代码
#3、1显示等待
'''
显示等待是指在指定条件成立时再进行下一步操作,如果条件一致不成立就一直等待,直到等待时间达到了设定的超过时间才报错。
使用显示等待需要使用WebDriverWait类,传入WebDriverWait对象和超时时间作为参数,配合until()或者until_not()函数进行条件设定
(可以利用expected_conditions类设定各种条件),更具返回值判断是否报错。
'''
# from selenium import webdriver
# from selenium.webdriver.chrome.service import Service
# from selenium.webdriver.common.by import By
# from selenium.webdriver.support import expected_conditions as EC
# from selenium.webdriver.support.ui import  WebDriverWait
# service = Service('E:\\python\\Scripts\\chromedriver.exe')      #实例化一个谷歌浏览器
# browser = webdriver.Chrome(service=service)
# browser.get('https://www.taobao.com')                           #访问淘宝网页首页
#
# #until()函数在等待期间会每个一段时间就判断元素是否存在,直到返回值不是Flase,如果超时则报错
# element = WebDriverWait(driver = browser, timeout = 10).until(EC.presence_of_element_located((By.ID,'q')))
# #until_not()函数在等待期间会每个一段时间就判断元素是否存在,直到返回值不是Flase,如果超时则报错
# element = WebDriverWait(driver = browser, timeout = 10).until_not(EC.presence_of_element_located((By.ID,'w')))

#3、2隐式等待
'''
隐式等待是指在实例化浏览器的WebDriverWait对象时,为该地想设置一个超时时间,在操作对象时,代码遇到元素未加载完毕或者不存在时,
会在规定的超出时间内不断地刷新页面在寻找该元素,直到找到该元素,如果超时还是找不到该元素,则会报错。这种方法适合元素缺少的情况。
'''
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import  WebDriverWait

service = Service('E:\\python\\Scripts\\chromedriver.exe')      #实例化一个谷歌浏览器
browser = webdriver.Chrome(service=service)
browser.get('https://www.taobao.com')                           #访问淘宝网页首页

browser.implicitly_wait(10)         #设置隐式等待,超过时间为10秒
相关推荐
q_q王7 分钟前
‌FunASR‌阿里开源的语音识别工具
python·大模型·llm·语音识别
不学无术の码农40 分钟前
《Effective Python》第1章 Pythonic 思维总结——编写优雅、高效的 Python 代码
开发语言·python
zhou18541 分钟前
MySQL保姆级安装教程(附资源包+5分钟极速配置+环境变量调试技巧)
java·python·mysql·php
lczdyx1 小时前
PNG转ico图标(支持圆角矩形/方形+透明背景)Python脚本 - 随笔
图像处理·python
lgily-12251 小时前
常用的设计模式详解
java·后端·python·设计模式
陈苏同学2 小时前
MPC控制器从入门到进阶(小车动态避障变道仿真 - Python)
人工智能·python·机器学习·数学建模·机器人·自动驾驶
mahuifa2 小时前
python实现usb热插拔检测(linux)
linux·服务器·python
MyhEhud3 小时前
kotlin @JvmStatic注解的作用和使用场景
开发语言·python·kotlin
狐凄3 小时前
Python实例题:pygame开发打飞机游戏
python·游戏·pygame
漫谈网络3 小时前
Telnet 类图解析
python·自动化·netdevops·telnetlib·网络自动化运维