在PythonAnywhere运行Selenium脚本报错求助:启动失败及连接问题
问题解决:PythonAnywhere上Selenium Chrome爬取报错处理
第一个报错:Chrome启动失败(DevToolsActivePort文件不存在)
你的代码存在关键问题:先无参数初始化了一次webdriver.Chrome(),之后才配置选项重新初始化,这会导致第一次启动的Chrome进程异常,进而引发后续启动报错。
修正方法:删除第一行无参数的driver = webdriver.Chrome(),确保仅在配置完所有选项后初始化一次WebDriver。同时注意Selenium 4.x版本推荐使用options参数替代旧的chrome_options参数,兼容性更好。
修正后的核心代码:
import os from selenium import webdriver chrome_options = webdriver.ChromeOptions() cwd = os.getcwd() chrome_options.add_argument("--no-sandbox") chrome_options.add_argument("--headless") chrome_options.add_argument("--disable-gpu") chrome_options.add_argument('--disable-dev-shm-usage') prefs = {'download.default_directory' : cwd} chrome_options.add_experimental_option('prefs', prefs) # 仅初始化一次driver driver = webdriver.Chrome(options=chrome_options)
第二个报错:net::ERR_TUNNEL_CONNECTION_FAILED
这个报错确实和PythonAnywhere免费用户的网络限制直接相关:
- 免费用户的出站请求必须通过平台代理服务器,且仅能访问白名单内的站点(以常见公共服务、主流网站为主)。
- 当尝试访问不在白名单内的站点时,就会触发隧道连接失败的错误。
另外,PythonAnywhere上预装的Chromium版本(你当前使用的是90.0.4430.212)较为老旧,可能和部分现代网站存在兼容性问题,但核心原因仍是免费版的网络访问限制。
后续建议
- 若目标站点不在免费版白名单中,可考虑升级到付费版,付费用户无出站访问限制。
- 可通过PythonAnywhere控制台用
curl命令测试站点连通性,确认是否在白名单内,例如:curl https://你的目标站点.com,返回正常则站点在白名单内,否则即为限制导致。
内容的提问来源于stack exchange,提问作者Heaton135
相关产品推荐
相关产品推荐

