项目场景:
1、用selenium+chrome 模拟浏览器在某云服务器爬虫。
2、在没有挂载显卡的环境运行chrome。
问题描述:
运行Chrome,报错:
[19615:19615:0219/152933.751028:ERROR:browser_main_loop.cc(1512)] Unable to open X display.
原因分析:
云服务器或者没有挂载显卡的环境都无法创建Chrome窗口实例。 需要虚拟一个环境给Chrome创建窗口。
解决方案:
可以用Xvfb,它不需要额外的硬件。
如果还没有安装Xvfb,安装Xvfb并执行以下步骤:
sudo apt-get install -y xvfb
安装依赖让 “headless” chrome/selenium 生效:
sudo apt-get -y install xorg xvfb gtk2-engines-pixbuf
sudo apt-get -y install dbus-x11 xfonts-base xfonts-100dpi xfonts-75dpi xfonts-cyrillic xfonts-scalable
可选,但很好用。用于捕捉Xvfb的屏幕截图。
sudo apt-get -y install imagemagick x11-apps
确保Xvfb在每次启动盒子/vm的时候都会启动:
Xvfb -ac :99 -screen 0 1280x1024x16 & export DISPLAY=:99
可以运行 google-chrome了