使用 PyVirtualDisplay 在无头 Linux 服务器中尝试 运行 Selenium 时出错(在 Mac OS 中测试)
Error in trying to run Selenium in a Headless Linux Server (testing in Mac OS) with PyVirtualDisplay
我一直在开发(在我的 Mac OSX 上)使用 Selenium Web Driver 来进行一些抓取,但我需要将脚本移动到 Headless Linux 服务器。
经过一些研究,我似乎需要使用 PyVirtualDisplay 到 simulate
在 Headless 服务器中启动 Selenium 浏览器。下面是我的代码和我遇到的错误。
代码:(Source)
from pyvirtualdisplay import Display
from selenium import webdriver
display = Display(visible=0, size=(800, 600))
display.start()
# now Firefox will run in a virtual display.
# you will not see the browser.
browser = webdriver.Firefox()
browser.get('http://www.google.com')
print browser.title
browser.quit()
display.stop()
我得到的错误:
My-MBP:learningpython neilnidhi$ python seleniumheadless.py
Traceback (most recent call last):
File "seleniumheadless.py", line 4, in <module>
display = Display(visible=0, size=(800, 600))
File "/usr/local/lib/python2.7/site- packages/pyvirtualdisplay/display.py", line 33, in __init__
self._obj = self.display_class(
File "/usr/local/lib/python2.7/site-packages/pyvirtualdisplay/display.py", line 51, in display_class
cls.check_installed()
File "/usr/local/lib/python2.7/site-packages/pyvirtualdisplay/xvfb.py", line 38, in check_installed
ubuntu_package=PACKAGE).check_installed()
File "/usr/local/lib/python2.7/site-packages/easyprocess/__init__.py", line 209, in check_installed
raise EasyProcessCheckInstalledError(self)
easyprocess.EasyProcessCheckInstalledError: cmd=['Xvfb', '-help']
OSError=[Errno 2] No such file or directory
Program install error!
这个问题的解决方法很简单。您没有运行 pyvirtualdisplay 可以附加到的 xserver。尝试安装 xvfb
或任何其他 x11
服务器及其字体和实用程序,它应该可以正常工作。不过,我显然有一个脚本可以在 linux 上安装整个 xvfb
堆栈。
但正如@Thomas Orozco 指出的那样,PhantomJS 做得很好。
它适用于我 linux
yum 安装 Xvfb
我一直在开发(在我的 Mac OSX 上)使用 Selenium Web Driver 来进行一些抓取,但我需要将脚本移动到 Headless Linux 服务器。
经过一些研究,我似乎需要使用 PyVirtualDisplay 到 simulate
在 Headless 服务器中启动 Selenium 浏览器。下面是我的代码和我遇到的错误。
代码:(Source)
from pyvirtualdisplay import Display
from selenium import webdriver
display = Display(visible=0, size=(800, 600))
display.start()
# now Firefox will run in a virtual display.
# you will not see the browser.
browser = webdriver.Firefox()
browser.get('http://www.google.com')
print browser.title
browser.quit()
display.stop()
我得到的错误:
My-MBP:learningpython neilnidhi$ python seleniumheadless.py
Traceback (most recent call last):
File "seleniumheadless.py", line 4, in <module>
display = Display(visible=0, size=(800, 600))
File "/usr/local/lib/python2.7/site- packages/pyvirtualdisplay/display.py", line 33, in __init__
self._obj = self.display_class(
File "/usr/local/lib/python2.7/site-packages/pyvirtualdisplay/display.py", line 51, in display_class
cls.check_installed()
File "/usr/local/lib/python2.7/site-packages/pyvirtualdisplay/xvfb.py", line 38, in check_installed
ubuntu_package=PACKAGE).check_installed()
File "/usr/local/lib/python2.7/site-packages/easyprocess/__init__.py", line 209, in check_installed
raise EasyProcessCheckInstalledError(self)
easyprocess.EasyProcessCheckInstalledError: cmd=['Xvfb', '-help']
OSError=[Errno 2] No such file or directory
Program install error!
这个问题的解决方法很简单。您没有运行 pyvirtualdisplay 可以附加到的 xserver。尝试安装 xvfb
或任何其他 x11
服务器及其字体和实用程序,它应该可以正常工作。不过,我显然有一个脚本可以在 linux 上安装整个 xvfb
堆栈。
但正如@Thomas Orozco 指出的那样,PhantomJS 做得很好。
它适用于我 linux
yum 安装 Xvfb