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

SeleniumBase+xvfb在Ubuntu虚拟机卡顿,Windows正常的技术求助

SeleniumBase在Ubuntu虚拟机中运行Servipag爬虫卡顿/驱动启动失败问题

问题描述

使用SeleniumBase开发的网页爬虫脚本在Windows本地运行正常,但在Ubuntu虚拟机中处理Servipag网站元素交互时出现卡顿,驱动无法正常启动或打开URL时卡住。已启用uc=True(Undetected Chrome)模式并指定User-Agent规避检测,但问题仍存在。

问题代码

def scrape_servipag_service_reading(service_type, company, identifier, companyType=None, propertyId=None):
    max_retries = 5
    result = None

    for attempt in range(max_retries):
        with SB(uc=True, xvfb=True) as sb:
            try:
                user_agent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.102 Safari/537.36"
                sb.execute_cdp_cmd('Network.setUserAgentOverride', {"userAgent": user_agent})
                sb.execute_script("Object.defineProperty(navigator, 'webdriver', {get: () => undefined})")
                sb.set_window_size(1920, 1000)

                url = f"https://portal.servipag.com/paymentexpress/category/{service_type}"
                sb.uc_open_with_reconnect(url, 4)
                sb.sleep(2)
                # Additional code to handle interactions with Servipag

            except Exception as e:
                logger.error(f"Attempt {attempt + 1}/{max_retries} failed with error: {e}")
            finally:
                if result is not None:
                    break
    return result

已尝试操作

  • 以headless模式运行(驱动无法启动)
  • 在SeleniumBase初始化时设置xvfb=True
  • 验证元素定位逻辑无问题(Windows环境运行正常)

环境信息

  • 操作系统:Ubuntu(虚拟机)
  • Chrome版本:129.0.6668.101(尝试过headless模式和xvfb)
  • SeleniumBase版本:4.32.9
  • Python版本:3.10.0

解决方案建议

1. 确保xvfb依赖完整安装

Ubuntu下可能缺少xvfb的依赖组件,执行以下命令补全:

sudo apt-get update && sudo apt-get install -y xvfb x11vnc xfonts-base

手动启动xvfb服务并设置显示端口:

Xvfb :99 -screen 0 1920x1080x24 & export DISPLAY=:99

之后再运行爬虫脚本。

2. 调整Undetected Chrome的启动参数

SeleniumBase的uc=True模式支持专用的headless优化模式,替换普通headless模式,同时禁用GPU加速避免虚拟机资源瓶颈:

with SB(uc=True, xvfb=True, headless2=True, disable_gpu=True) as sb:

3. 匹配User-Agent与当前Chrome版本

你使用的User-Agent对应Chrome 98,但当前Ubuntu的Chrome是129版本,版本不匹配会增加被检测概率,替换为对应版本的Linux端User-Agent:

user_agent = "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.6668.101 Safari/537.36"

4. 检查ChromeDriver与Chrome版本兼容性

手动触发SeleniumBase更新ChromeDriver,确保与本地Chrome版本完全匹配:

python -m seleniumbase install chromedriver

验证版本一致性:

chromedriver --version

5. 增加虚拟机资源分配

Ubuntu虚拟机CPU、内存不足会导致Chrome启动卡顿,建议分配至少2核CPU、4GB内存,并关闭不必要的后台进程。

6. 启用调试日志排查启动问题

在SB初始化时添加日志参数,获取详细的启动报错信息:

with SB(uc=True, xvfb=True, verbose=True, log_path="selenium_logs.txt") as sb:

查看生成的日志文件,定位驱动启动失败的具体原因。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 05:43:30