V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
tiRolin
V2EX  ›  浏览器

Linux 服务器上无法正确调用 Selenium 框架制作的爬虫接口问题怎么解决?

  •  
  •   tiRolin · 361 天前 · 1931 次点击
    这是一个创建于 361 天前的主题,其中的信息可能已经有所发展或是发生改变。

    本地使用就可以解决,但是服务器上不行

    服务器的谷歌版本是 119.0.6045.123 ,chromedriver 的版本是 119.0.6045.105 ,我本地在 Windows 上都是可以正常运行的,但是 Linux 上就会报下面的异常

    org.openqa.selenium.SessionNotCreatedException: Could not start a new session. Response code 500. Message: session not created: Chrome failed to start: exited normally.
      (session not created: DevToolsActivePort file doesn't exist)
      (The process started from chrome location /opt/google/chrome/chrome is no longer running, so ChromeDriver is assuming that Chrome has crashed.)
    Build info: version: '4.1.4', revision: '535d840ee2'
    System info: host: 'VM-0-17-ubuntu', ip: '127.0.1.1', os.name: 'Linux', os.arch: 'amd64', os.version: '4.15.0-206-generic', java.version: '1.8.0_362'
    Driver info: org.openqa.selenium.chrome.ChromeDriver
    

    我去搜索引擎查了下这个异常,基本都是说谷歌浏览器的版本和 chromedriver 版本对不上的问题,但是我这个版本已经是最能对得上的了,完全切合的 chromedriver 版本我真找不到

    这个问题卡了我挺久了,我不知道咋整所以来问问,看看有没有大佬能救下

    16 条回复    2023-11-14 21:13:51 +08:00
    yzding
        1
    yzding  
       361 天前 via iPhone
    使用 headless 参数
    sanjay128
        2
    sanjay128  
       361 天前
    版本对不上的问题。等两天,等 choromedriver 更新到 119.0.6045.123 。或者下载旧版本的 chrome 和 chromedriver 。
    两者必须版本一致才行。
    mekingname
        3
    mekingname  
       361 天前
    这是因为你的服务器没有桌面,Chrome 起不来导致的问题。你可以在服务器上面安装 Xvfb ,它可以创建一个假桌面,让 Selenium 可以用有头模式来运行。然后使用 Xvfb 来启动代码就可以了。

    你可以看我的这篇文章: https://mp.weixin.qq.com/s/U-o58Bi0B7kMocwxqlptfA
    wzwwzw
        4
    wzwwzw  
       361 天前
    试试 playwright ,playwright 在开发环境上简单很多,不需要下载 chromedriver 之类的东西。
    CoderLife
        5
    CoderLife  
       361 天前
    用 xvfb
    lc1450
        6
    lc1450  
       361 天前
    走 CDP 把
    PiCpo
        7
    PiCpo  
       361 天前
    无头模式
    defunct9
        8
    defunct9  
       361 天前 via iPhone
    当初配了半天才搞定。需要你对 linux 足够熟悉
    macaodoll
        9
    macaodoll  
       360 天前 via Android
    Selenium 官方有 docker 容器
    PikaTQL
        10
    PikaTQL  
       360 天前
    赞同楼上,用容器万事大吉
    aosan926
        11
    aosan926  
       360 天前
    Docker +1 , 用 Selenium Grid ,可以不用配置桌面环境,https://github.com/SeleniumHQ/docker-selenium
    C0nvN3t
        12
    C0nvN3t  
       360 天前
    options.add("--headless") 试试?
    privil
        13
    privil  
       360 天前
    @mekingname #3 确实可以跑,就是 Selenium 相关的代码 API 改动了
    vialon17
        14
    vialon17  
       360 天前
    --disable-extensions
    --disable-dev-shm-usage
    --no-sandbox
    --user-data-dir=./data/chrome_data/
    --remote-debugging-port=30667

    看起来没加 devtool 端口,最新的 selenium 不管 driver 其实也可以跑,不需要添加 executable_path 参数。
    当然我这边用的 python selenium 。
    UKnowMe
        15
    UKnowMe  
       360 天前
    试下:webdriver-manager 库
    tiRolin
        16
    tiRolin  
    OP
       359 天前
    @mekingname 谢谢谢谢,这个真的帮大忙了,前几天我就解决问题了,但是忘了回复你了就是
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1337 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 23:33 · PVG 07:33 · LAX 15:33 · JFK 18:33
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.