Seleniumbase Chromedriver加载常规网页时冻结故障求助
解决SeleniumBase加载常规网页冻结问题
排查与修复步骤
1. 修正代码错误
你的代码存在明显用法错误:driver.get(page_source) 是无效调用,page_source是浏览器对象的属性而非URL。错误的get操作会尝试加载无效地址,直接导致浏览器挂起。修正后的代码:
#!/usr/bin/env python3 from seleniumbase import Driver driver = Driver(uc = True, proxy = proxy_string) # some code driver.get(url) page_source = driver.page_source # 正确获取页面源码
2. 调整页面加载策略
升级到SeleniumBase 4.29后,默认的页面加载策略可能会等待所有资源(图片、样式、脚本)完全加载,部分网页的慢资源会触发冻结。可以修改加载策略减少等待时间:
driver = Driver(uc=True, proxy=proxy_string, page_load_strategy="eager")
eager:DOM加载完成即继续执行,无需等待静态资源加载完毕none:完全不等待页面加载,适合无需依赖资源的场景
3. 测试禁用UC模式
UC模式(undetected-chromedriver)的反检测特性可能与新版ChromeDriver(126.0.6478.62)存在适配冲突。先临时禁用UC模式验证:
driver = Driver(proxy=proxy_string) # 移除uc=True参数
如果禁用后恢复正常,说明UC模式需要适配,可尝试降级到SeleniumBase 4.28版本:
pip install seleniumbase==4.28
4. 排查代理问题
代理可能阻塞了HTML页面的静态资源请求(CSS、JS等),而JSON页面因资源量小不受影响。可以暂时移除代理测试:
driver = Driver(uc=True) # 移除proxy参数
若移除代理后正常,需检查代理的稳定性,或为代理添加静态资源的访问白名单。
5. 清理浏览器缓存
UC模式会生成专属的浏览器缓存目录,旧缓存可能导致加载冲突。可以指定新的用户数据目录,或清理旧缓存:
driver = Driver(uc=True, proxy=proxy_string, user_data_dir="/tmp/new_chrome_profile")
内容的提问来源于stack exchange,提问作者LukSkyWokka
相关产品推荐
相关产品推荐

