Python搭配Selenium调用Chrome无法完整打开网站如何解决
解决方案
- 优先添加Selenium反检测启动参数,避免网站识别到自动化工具特征拦截加载,修改初始化代码如下:
from selenium import webdriver from selenium.webdriver.chrome.options import Options chrome_options = Options() # 移除自动化控制标识 chrome_options.add_experimental_option("excludeSwitches", ["enable-automation"]) chrome_options.add_experimental_option("useAutomationExtension", False) # 禁用浏览器的自动化特征检测 chrome_options.add_argument("--disable-blink-features=AutomationControlled") # 可选:复用本地Chrome的用户配置,和你手动打开浏览器的环境完全一致 # chrome_options.add_argument(r"user-data-dir=C:\Users\你的系统用户名\AppData\Local\Google\Chrome\User Data") driver = webdriver.Chrome( executable_path=r"..\chromedriver_win32\chromedriver.exe", options=chrome_options ) # 覆写webdriver属性,进一步绕过特征检测 driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument", { "source": """ Object.defineProperty(navigator, 'webdriver', { get: () => undefined }) """ }) driver.get("https://example.com") - 检查Chrome浏览器和chromedriver版本匹配度:本地安装的Chrome大版本必须和下载的chromedriver大版本完全一致,版本不兼容会出现资源加载失败、接口请求异常等问题。
- 调整页面加载策略:默认Selenium会等待所有页面资源加载完成再返回,部分静态资源加载超时会导致页面显示不全,可设置加载策略为
eager,仅等待DOM树加载完成:chrome_options.page_load_strategy = 'eager' - 添加显式等待,避免代码执行速度快于页面渲染速度,提前结束加载流程:
from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.common.by import By # 示例:等待页面核心元素加载完成,最长等待10秒 WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.TAG_NAME, 'body'))) - Windows环境可额外添加禁用沙箱、禁用GPU参数,避免浏览器启动异常导致加载失败:
chrome_options.add_argument('--no-sandbox') chrome_options.add_argument('--disable-gpu')
内容的提问来源于stack exchange,提问作者Jaffer Wilson
相关产品推荐
相关产品推荐

