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

Docker部署Python-Selenium应用:WebDriver配置无结果无报错排查

问题分析与修复方案

1. 浏览器镜像与代码配置不匹配

你启动独立容器用的是selenium/standalone-chrome,但docker-compose里配置的是selenium/standalone-firefox,而代码中使用的是ChromeOptions。Firefox容器无法识别Chrome的配置参数,这会导致连接失败或无响应。
修复:把docker-compose中的镜像改成selenium/standalone-chrome,保持与代码和最初测试的镜像一致:

selenium:
  image: selenium/standalone-chrome
  ports:
  - 4444:4444

2. 硬编码容器IP不可靠

代码中直接写死了http://172.18.0.3:4444/wd/hub,Docker Compose的服务网络中,容器IP可能随重启变化,应该用服务名作为域名访问(Compose会自动解析)。
修复:把Remote连接地址改成服务名:

driver = webdriver.Remote("http://selenium:4444/wd/hub", options=chrome_options)

3. 代码缺少核心逻辑与错误处理

当前函数只初始化了WebDriver,没有执行driver.get(url)等爬取操作,也没有捕获异常的逻辑,所以即使进入函数也不会返回结果,出错也看不到提示。
修复:补充爬取逻辑和错误处理,示例:

def scrap_function(url):
    chrome_options = Options()
    chrome_options.add_argument("--headless")
    chrome_options.add_argument("--no-sandbox")
    chrome_options.add_argument("--disable-dev-shm-usage")
    chrome_prefs = {}
    chrome_options.experimental_options["prefs"] = chrome_prefs
    chrome_prefs["profile.default_content_settings"] = {"images": 2}
    
    driver = None
    try:
        driver = webdriver.Remote("http://selenium:4444/wd/hub", options=chrome_options)
        driver.get(url)
        # 这里添加你的爬取逻辑,比如获取页面源码
        result = driver.page_source
        return result
    except Exception as e:
        print(f"爬取出错: {str(e)}")
        return None
    finally:
        if driver:
            driver.quit()

4. Dockerfile命令不完整

你提供的Dockerfile第三条RUN apt-get update命令未完成,不过因为你现在用的是独立Selenium容器,你的Python镜像其实不需要安装Chrome和Chromedriver,这条可以删除或者补全(如果是之前的本地运行方案)。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 12:05:29