You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Selenium调用driver.get()访问特定网页报未知命令响应错误

问题描述

开展网页数据爬取工作时,访问目标网页提取数据过程中出现异常。将该链接与其他多个待抓取链接放入for循环批量处理时,其余链接均可正常访问,唯独调用driver.get()方法访问该链接时抛出异常。

相关实现代码

driver = webdriver.Chrome(executable_path="..\Drivers\chromedriver.exe")

def page_content_extractor(given_line):

    print('in page content extractor function. Given link is : ',given_line)
    try:
        driver.get(given_line)
    except Exception as e:
        print('Exception occurred !! Find these links under rogue links')
        print(e)

    time.sleep(2)

异常栈信息

selenium.common.exceptions.WebDriverException: Message: unknown error: unexpected command response
  (Session info: chrome=103.0.5060.66)
Stacktrace:
Backtrace:
    Ordinal0 [0x006FD953+2414931]
    Ordinal0 [0x0068F5E1+1963489]
    Ordinal0 [0x0057C6B8+837304]
    Ordinal0 [0x0056EB34+781108]
    Ordinal0 [0x0056E06A+778346]
    Ordinal0 [0x0056D646+775750]
    Ordinal0 [0x0056CEBC+773820]
    Ordinal0 [0x0056CD59+773465]
    Ordinal0 [0x0057DA70+842352]
    Ordinal0 [0x005CAB6F+1157999]
    Ordinal0 [0x005C4463+1131619]
    Ordinal0 [0x0059E860+976992]
    Ordinal0 [0x0059F756+980822]
    GetHandleVerifier [0x0096CC62+2510274]
    GetHandleVerifier [0x0095F760+2455744]
    GetHandleVerifier [0x0078EABA+551962]
    GetHandleVerifier [0x0078D916+547446]
    Ordinal0 [0x00695F3B+1990459]
    Ordinal0 [0x0069A898+2009240]
    Ordinal0 [0x0069A985+2009477]
    Ordinal0 [0x006A3AD1+2046673]
    BaseThreadInitThunk [0x7660FA29+25]
    RtlGetAppContainerNamedObjectPath [0x77B07A9E+286]
    RtlGetAppContainerNamedObjectPath [0x77B07A6E+238]


Process finished with exit code 1

补充说明

  • 该异常仅在访问上述特定URL时触发,其余待爬链接访问均无异常
  • 已尝试添加try-except块捕获异常但未生效
  • 目前无法定位问题原因,求助可行的排查与修复方案

问题原因与修复方案

这个报错是Chrome 103版本和对应Selenium驱动的已知兼容问题,不是目标网站反爬导致,也不是代码逻辑问题。

核心原因

Chrome 103版本调整了页面加载过程中的CDP响应逻辑,当页面存在异步资源持续加载、提前推送响应帧的场景时,Seleniumdriver.get()默认等待页面完全加载的逻辑会收到非预期的命令响应,直接抛出unexpected command response异常。本次触发问题的目标页面前端有大量异步加载的轮播、3D轮毂渲染资源,刚好命中了这个兼容bug。

可行修复方案

按优先级从高到低尝试:

  1. 升级Selenium与ChromeDriver版本
    直接把Selenium升级到4.3.0及以上版本,同时将Chrome浏览器和ChromeDriver升级到匹配的最新稳定版,这个兼容bug在Selenium 4.3.0版本已经做了官方修复,升级后不需要修改原有代码即可正常访问。
    升级命令:
    pip install --upgrade selenium
    
  2. 临时修改页面加载策略(无法升级版本时使用)
    如果暂时不能升级环境,可以把Chrome的页面加载策略从默认的normal(等待所有资源加载完成)改成eager,只要DOM加载完成就返回,不会等待图片、渲染脚本这类慢资源加载,绕开响应冲突问题。修改初始化驱动的代码:
    from selenium.webdriver.chrome.options import Options
    chrome_options = Options()
    chrome_options.page_load_strategy = 'eager'
    driver = webdriver.Chrome(executable_path="..\Drivers\chromedriver.exe", options=chrome_options)
    
  3. 异常重试兜底
    之前写的try-except没生效是因为异常抛出后没有做重试逻辑,可以在捕获异常后增加重试机制,遇到这个报错时等待1秒后重新发起访问,大部分场景下第二次访问就能正常加载:
    import time
    def page_content_extractor(given_line, max_retry=2):
        print('in page content extractor function. Given link is : ',given_line)
        for i in range(max_retry):
            try:
                driver.get(given_line)
                break
            except Exception as e:
                print(f'第{i+1}次访问异常,准备重试' if i < max_retry-1 else '重试次数耗尽,标记为异常链接')
                print(e)
                time.sleep(1)
        time.sleep(2)
    

注意:不要使用none加载策略,否则会出现DOM还没加载完就执行后续提取逻辑,导致元素定位失败。

内容的提问来源于stack exchange,提问作者Pratik Gokhale

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 16:01:06