Linux环境下Selenium调用ChromeDriver执行driver.get无响应报错如何解决?
修复方案
1. 补充高版本Chrome无头运行必备启动参数
Chrome 95及以上版本在无图形环境下运行时默认安全限制更多,需要额外添加启动参数规避兼容性问题,你需要在ChromeOptions中添加以下配置:
--no-sandbox:关闭沙箱模式,解决非root用户运行Chrome的权限限制问题--disable-dev-shm-usage:禁用/dev/shm共享内存,避免服务器内存不足导致Chrome崩溃--disable-gpu:关闭GPU硬件加速,无图形环境下无需该功能,可减少运行异常--ignore-certificate-errors:忽略SSL证书校验错误,避免部分站点证书问题导致加载卡住- 同时建议将UA替换为Chrome内核的标识,避免目标站点拦截旧IE内核的UA请求
2. 添加页面加载超时限制
避免无限等待,可手动设置页面加载超时时间,超时后直接抛出异常便于排查:
driver.set_page_load_timeout(30) # 单位为秒,可根据需求调整
修改后的完整可运行代码
from selenium import webdriver from pyvirtualdisplay import Display display = Display(visible=0, size=(1920, 1080)) display.start() url = 'https://card-search.naver.com/list' path = '/data/WebCrawl/IPO/chromedriver' options = webdriver.ChromeOptions() # 补充必要启动参数 options.add_argument("--no-sandbox") options.add_argument("--disable-dev-shm-usage") options.add_argument("--disable-gpu") options.add_argument("--ignore-certificate-errors") # 替换为Chrome内核UA options.add_argument("user-agent=Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36") driver = webdriver.Chrome(path, options=options) # 设置30秒页面加载超时 driver.set_page_load_timeout(30) driver.get(url)
额外排查方向
如果按上述修改后还是无法访问,可先在服务器本地用curl命令测试是否能正常访问目标站点,排查是否是新服务器的网络出口被目标站点封禁、或者DNS解析异常的问题。
内容的提问来源于stack exchange,提问作者dohyunlee_kor
相关产品推荐
相关产品推荐

