[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为全局变量,如果是浅拷贝,后面对其属性的更改,会覆盖掉前面其属性的设置。