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秒
相关推荐
某人辛木3 小时前
Web自动化测试
前端·python·pycharm·pytest
C+++Python4 小时前
详细介绍一下Java泛型的通配符
java·windows·python
小帅热爱难回头5 小时前
编写Skill生成AI落地项目系统架构
python
diving deep5 小时前
脚本速览-python
开发语言·python
2601_951643776 小时前
Python第一,Java跌出前三,C语言杀回来了
java·c语言·python·编程语言排行·技术趋势
AC赳赳老秦9 小时前
OpenClaw+Power Apps 实战:自动生成 Power Apps 应用、连接 Excel 数据源
大数据·开发语言·python·serverless·excel·deepseek·openclaw
茉莉玫瑰花茶10 小时前
综合案例 - AI 智能租房助手 [ 5 ]
服务器·数据库·人工智能·python·ai
文艺倾年10 小时前
【强化学习】强化学习基本概念,20W字总结(一)
人工智能·python·语言模型·自然语言处理·面试·职场和发展·大模型
宸丶一10 小时前
Day 13:持久化记忆 - 让 Agent 拥有长期记忆
jvm·python·ai
码云骑士11 小时前
13-列表append的底层真相(上)-listobject源码中的预分配策略
开发语言·python