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秒
相关推荐
2601_962299881 分钟前
排序,然后再使用
python·排序·列表·关键函数·装饰-排序-去装饰
Looooking11 分钟前
Python 之 Flask 的全局变量 g
后端·python·flask
棣廷28 分钟前
初识Python异常处理、模块与包
python
2601_9622953332 分钟前
Python自动化批量文档生成工具:Word与Excel的结合应用
python·自动化·word·excel·文档生成
2601_962293249 小时前
Python自动化统计团队工作量并生成可视化仪表盘的脚本方案【指导】
python·数据分析·自动化·可视化·仪表盘
2601_9622937910 小时前
OCRmyPDF批处理脚本:使用Python自动化复杂OCR任务
python·自动化·批处理脚本·ocrmypdf·ocr任务
Java后端的Ai之路11 小时前
20、Python - 备忘录模式
开发语言·人工智能·python·外观模式·备忘录模式
2601_9620777112 小时前
基于Python与NLP的新闻事件信息抽取实战:从NER到时空标准化
python·nlp·transformers·spacy·新闻事件抽取
JavaPub-rodert12 小时前
LangChain 从入门到 Agent 实战:用 Python 搭建一个真正能调用工具和知识库的 AI 助手
人工智能·python·langchain