Streamlit云服务器上Selenium ChromeDriver版本兼容及运行稳定性问题求助
Streamlit云服务器上Selenium ChromeDriver版本兼容及运行稳定性问题求助
大家好,我在Streamlit云服务器上用Selenium做爬虫时,Chrome和ChromeDriver的版本兼容问题快把我搞疯了,翻了好几个相关帖子都没解决,来这儿求助!
目前的诡异现象和遇到的问题:
指定版本勉强能用但不稳定
我现在是手动指定ChromeDriver版本120.0.6099.10900来初始化WebDriver,代码如下:webdriver.Chrome(service=Service(ChromeDriverManager(driver_version="120.0.6099.10900").install()), options=options)这么写偶尔能跑通爬虫,但大部分时候都会触发WebDriver错误,稳定性极差。
版本识别混乱
如果我不指定版本,直接用ChromeDriverManager()初始化,会弹出错误:This version of ChromeDriver only supports Chrome version 131. Current browser version is 120.0.6099.224但我本地的Chrome版本明明是131.0.x,服务器里却识别成120.0.x?我怀疑是不是Streamlit云环境里用的是专门的测试/虚拟Chrome版本?
指定版本的仓库缺失问题
我查了ChromeDriverManager的默认仓库,发现里面最高只到114.0.x的版本,120.x的版本根本不在默认仓库里。所以手动指定120版本时,经常会报:not a zip file/ bad zip file for version 120因为拉取不到对应的合法压缩包。
随机出现的页面崩溃错误
就算用指定的120版本Driver,偶尔还会碰到页面崩溃的错误:WebDriver error: Message: unknown error: session deleted because of page crash from unknown error: cannot determine loading status from tab crashed (Session info: chrome-headless-shell=120.0.6099.224)
我的完整Driver初始化代码:
options = Options() options.add_argument("--headless") options.add_argument("--no-sandbox") # 忽略特定图形和媒体错误 options.add_experimental_option('excludeSwitches', ['enable-logging']) prefs = { "profile.managed_default_content_settings.images": 2, "profile.default_content_setting_values.media_stream": 2 } options.add_experimental_option("prefs", prefs) driver = webdriver.Chrome(service=Service(ChromeDriverManager(driver_version="120.0.6099.10900").install()), options=options) driver.get(url) time.sleep(3)
疑问和诉求
现在手动指定120版本的方案完全是权宜之计,根本没法长期用。想问问大家:
- 是不是我对Streamlit云环境里的Chrome版本理解错了?为什么本地和服务器识别的版本不一样?
- 有没有办法让ChromeDriverManager自动匹配Streamlit云里的Chrome版本,不用手动指定?
- 针对120.x版本的Driver缺失问题,有没有其他稳定的解决办法?
备注:内容来源于stack exchange,提问作者IGRISGOD
相关产品推荐
相关产品推荐

