selenium get页面很慢时处理办法

[scrapy] 2024-11-13 圈点634

摘要:Python selenium get页面很慢时,处理办法

selenium get页面很慢时,处理办法


1,设置超时时间,并用try对其进行异常处理


driver.set_page_load_timeout(20)

driver.set_script_timeout(20)

#try

try:

    driver.get("url")

except:

    print("加载页面太慢,停止加载,继续下一步操作")

    driver.execute_script("window.stop()")

else:

    pass



2,修改加载策略pageLoadStrategy(推荐)


设置加载策略pageLoadStrategy的三个示例。仅测试第一种,其为OK。


示例1,测试OK

from selenium import webdriver

from selenium.webdriver.common.desired_capabilities import DesiredCapabilities

from selenium.webdriver.support.ui import WebDriverWait


desired_capabilities = DesiredCapabilities.CHROME  # 修改加载策略

desired_capabilities["pageLoadStrategy"] = "none"  # 此处为直接打开就继续,不会

driver = webdriver.Chrome('./chromedriver.exe')

wait = WebDriverWait(driver, 10)  #后面可以使用wait对特定元素进行等待

driver.get('url')



示例2,没测试,但应该是新版本的设置方法

from selenium import webdriver

from selenium.webdriver.chrome.options import Options

options = Options()

options.page_load_strategy = 'normal'

driver = webdriver.Chrome(options=options)

driver.get('url')

driver.quit()



示例3:没测试,但应该是新版本的设置方法

from selenium import webdriver

from selenium.webdriver.chrome.options import Options


options = Options()

options.set_capability('pageLoadStrategy', 'eager')

driver = webdriver.Chrome(options=options)

driver.get('url')




pageLoadStrategy 支持以下值:


normal这种状态Selenium等待整个页面加载(下载并解析了html内容和子资源)。


eager 这种状态导致Selenium等待DOMContentLoaded事件(仅下载和解析html内容)。


none 此策略使Selenium在完全接收初始页面内容(下载html内容)后立即返回。


默认情况下,当Selenium WebDriver加载页面时,遵循normal的页面加载策略。正常情况下,selenium会等待整个界面加载完成(指对html和子资源的下载与解析,如JS文件,图片等,不包括ajax)



注意:

DesiredCapabilities.CHROME为全局变量,如果是浅拷贝,后面对其属性的更改,会覆盖掉前面其属性的设置。


selenium  get很慢  

感谢反馈,已提交成功,审核后即会显示