0

スクレイピングを行うために Selenium Web Driver を使用して (Mac OSX 上で) 開発を行っていますが、スクリプトをヘッドレス Linux サーバーに移動する必要があります。

いくつかの調査では、ヘッドレス サーバーで Selenium のブラウザーを起動するには、PyVirtualDisplayを使用する必要があるようです。simulate以下は私のコードと私が得ているエラーです。

コード: (ソース)

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! 
4

2 に答える 2

0

この問題の解決策は非常に簡単です。pyvirtualdisplay がアタッチできる xserver が実行されていません。xvfbまたはそのフォントとユーティリティを使用して他のサーバーをインストールしてみてくださいx11。正常に動作するはずです。xvfbただし、スタック全体をLinuxにインストールするスクリプトがあるようです。

しかし、@Thomas Orozco が指摘したように、PhantomJS はかなりうまく機能します。

于 2015-12-14T13:51:40.137 に答える