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

2023-11-12 16:15:31 +08:00
 tiRolin

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

服务器的谷歌版本是 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 版本我真找不到

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

2002 次点击
所在节点    浏览器
16 条回复
yzding
2023-11-12 16:29:14 +08:00
使用 headless 参数
sanjay128
2023-11-12 17:58:06 +08:00
版本对不上的问题。等两天,等 choromedriver 更新到 119.0.6045.123 。或者下载旧版本的 chrome 和 chromedriver 。
两者必须版本一致才行。
mekingname
2023-11-12 18:04:59 +08:00
这是因为你的服务器没有桌面,Chrome 起不来导致的问题。你可以在服务器上面安装 Xvfb ,它可以创建一个假桌面,让 Selenium 可以用有头模式来运行。然后使用 Xvfb 来启动代码就可以了。

你可以看我的这篇文章: https://mp.weixin.qq.com/s/U-o58Bi0B7kMocwxqlptfA
wzwwzw
2023-11-12 21:30:00 +08:00
试试 playwright ,playwright 在开发环境上简单很多,不需要下载 chromedriver 之类的东西。
CoderLife
2023-11-12 22:50:41 +08:00
用 xvfb
lc1450
2023-11-13 00:02:11 +08:00
走 CDP 把
PiCpo
2023-11-13 01:18:51 +08:00
无头模式
defunct9
2023-11-13 06:42:31 +08:00
当初配了半天才搞定。需要你对 linux 足够熟悉
macaodoll
2023-11-13 08:28:14 +08:00
Selenium 官方有 docker 容器
PikaTQL
2023-11-13 08:43:17 +08:00
赞同楼上,用容器万事大吉
aosan926
2023-11-13 09:04:22 +08:00
Docker +1 , 用 Selenium Grid ,可以不用配置桌面环境,https://github.com/SeleniumHQ/docker-selenium
C0nvN3t
2023-11-13 10:09:07 +08:00
options.add("--headless") 试试?
privil
2023-11-13 11:46:02 +08:00
@mekingname #3 确实可以跑,就是 Selenium 相关的代码 API 改动了
vialon17
2023-11-13 12:03:25 +08:00
--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
2023-11-13 17:11:01 +08:00
试下:webdriver-manager 库
tiRolin
2023-11-14 21:13:51 +08:00
@mekingname 谢谢谢谢,这个真的帮大忙了,前几天我就解决问题了,但是忘了回复你了就是

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/991184

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX