Python Crawler8:Selenium加载策略

Python Crawler8:Selenium加载策略

加载策略

Selenium支持的加载策略有三种,分别是noneeagernormal,且提供自带的方法让我们去设置启动策略。
关键字
加载策略状态
描述
none
没有
等待html下载完成,不等待解析完成就开始执行操作,selenium 会直接返回
eager
渴望
等待整个dom树加载完成,即DOMContentLoaded这个事件完成。只要 HTML 完全加载和解析完毕就开始执行操作,忽略加载样式表、图像和子框架
normal
正常(默认)
等待整个页面加载完毕再开始执行操作
  • Tips📢📢📢:selenium4的设置
# 设置谷歌驱动器的环境 options = webdriver.ChromeOptions() # 设置chrome不加载图片,提高速度 options.add_experimental_option( "prefs", {"profile.managed_default_content_settings.images": 2}) # 设置不显示窗口 options.add_argument('--headless') # 设置页面加载策略为none options.page_load_strategy = "eager" # 创建一个谷歌驱动器 driver = webdriver.Chrome(options=options)
Python Selenium.WebDriver 最强详解页面加载策略_XianZhe_的博客-CSDN博客_selenium页面加载策略
在通过Selenium加载一个网页时,Selenium都会等待页面加载完了才会运行下面的代码,这是因为 webdriver.get 方法会阻塞直到网页全部加载完成。 通常如果当页面加载花费大量时间时,可能是加载了很多外部资源「如:图像、css」,又或则是浏览的是国外网站,使用的网络环境差等问题,这些都是造成页面加载慢的原因。 但对于某些网页来说,需要加载的元素往往比不需要使用到的网页更快的加载出来,那么如何才能在加载到需要的数据之后就停止阻塞并且执行 webdriver.get 方法下的代码是本文章要探究的问题。 Selenium支持的加载策略有三种,分别是 none、 eager、 normal ,且提供自带的方法让我们去设置启动策略。 在浏览器选项类的源码中能够看到,Selenium已经写好了设置加载策略的方法,同时也限制了加载策略的种类『源码第13行』 每种类型的 webdriver 都有一个对应的配置文件放在特定的类 DesiredCapabilities 里面,这个配置文件的数据结构为字典格式,通过定义键为 pageLoadStrategy 的键值对,可以使webdriver的页面加载策略发生改变。 from selenium.webdriver.common.desired_capabilities import DesiredCapabilities 可以看到,源码实质上就是在 DesiredCapabilities 配置文件中增加了一个 pageLoadStrategy属性值『源码第32行』,而 page_load_strategy 则是 Selenium 提供设置加载策略的方法。 对于DesiredCapabilities类,在博客 Python Selenium.WebDriverWait 浏览器启动参数设置『Edge如何使用启动参数』 中也有提到过,不管是在浏览器启动参数类 Options 源码中,还是自定义的 Options 启动参数类中,都会用的上。本篇文章相当于对 Python Selenium.WebDriverWait 浏览器启动参数设置『Edge如何使用启动参数』 的扩展。 Options选项类部分源码 DesiredCapabilities 部分源码 DesiredCapabilities类,其本质就是存放着关于浏览器启动的配置文件。 在Selenium3中,不同浏览器的Options选项类源码存在部分差异,为方便展示,上述参考源码使用的是Edge浏览器的选项类。
Python Selenium.WebDriver 最强详解页面加载策略_XianZhe_的博客-CSDN博客_selenium页面加载策略
 
/html/body/div[3]/div/div[1]/header/div/div[2]/div/div/div[3]/div[1]/div/div/div/div/input