如何在Raspberry Pi上安装PhantomJS与Python Selenium一起使用?

我想运行一个Python脚本,使用Selenium WebDriverPhantomJS作为运行Raspbian的Raspberry Pi上的无头浏览器。

我原来写在OS X的脚本,它工作正常。 但是为了使它在树莓上工作,我遇到了问题。

当试图运行脚本,我得到这个错误:

 raise WebDriverException("Can not connect to the Service %s" % self.path) selenium.common.exceptions.WebDriverException: Message: Can not connect to the Service /usr/bin/phantomjs 

剧本的简短版本:

 from selenium import webdriver from selenium.webdriver.common.desired_capabilities import DesiredCapabilities user_agent = ("Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_4) " + "AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.57 Safari/537.36") dcap = dict(DesiredCapabilities.PHANTOMJS) dcap["phantomjs.page.settings.userAgent"] = user_agent serv_args = ["--ignore-ssl-errors=false", "--ssl-protocol=tlsv1", "--disk-cache=false"] driver = webdriver.PhantomJS(executable_path="/usr/bin/phantomjs", desired_capabilities = dcap, service_arguments = serv_args, port=65000) 

我看到其他人有类似我的问题 – 有不同的解决scheme – 大多数似乎涉及到自己构buildPhantomJS,或者克隆和安装适用于Raspberry(现在与主PhantomJS项目不同步)的Github分支。

问题

  • 有谁知道如何解决这个问题 – 事实上这个问题是关于什么的?
  • 如果解决scheme涉及将二进制文件手动安装到/usr/local/bin等,我该怎么做? PhantomJS网页上提供的二进制文件是针对linux-x86linux-i686 ,所以我假设他们不能在Raspberry Pi 2 B ARM Cortex A-7处理器上工作
  • 我也试图按照这些说明自己制造PhantomJS,但是这个过程中途停了下来。 树莓也不符合推荐的build筑硬件要求。

背景信息

  • 我正在使用Python 2.7.9
  • 我创build了一个virtualenv并在其中安装了所有的Python模块; 例如pip install selenium ,并试图在这里运行脚本
  • 我通过sudo apt-get install phantomjs安装了最新版本的PhantomJS
  • testing时我禁用了ufw防火墙

Solutions Collecting From Web of "如何在Raspberry Pi上安装PhantomJS与Python Selenium一起使用?"

好的,我将从解决方案开始,有一个为arm编译的版本phantomjs-linux-armv6l ,在pi上运行以下命令:

 $ cd /tmp $ wget https://github.com/aeberhardo/phantomjs-linux-armv6l/archive/master.zip $ unzip master.zip $ cd phantomjs-linux-armv6l-master $ bunzip2 *.bz2 && tar xf *.tar 

我补充说:

 sudo cp phantomjs-1.9.0-linux-armv6l/bin/phantomjs /usr/bin 

所以幻影将会在你的路上。

 pi@raspberrypi ~ $ phantomjs --version 1.9.0 pi@raspberrypi ~ $ phantomjs phantomjs> 

现在我们已经完成了测试的时间:

 pi@raspberrypi ~ $ cat test.py #!/usr/bin/python from selenium import webdriver driver = webdriver.PhantomJS() driver.get('http://stackoverflow.com/questions/36314771/how-to-install-phantomjs-for-use-with-python-selenium-on-the-raspberry-pi/36388824#36388824') a = driver.find_element_by_xpath('//*[@id="question-header"]/h1/a') print(a.text) print(driver) pi@raspberrypi ~ $ python test.py How to install PhantomJS for use with Python seleniumium on the Raspberry Pi? <selenium.webdriver.phantomjs.webdriver.WebDriver (session="b184e110-f9c4-11e5-aede-7f5c42f062d7")> 

从常见问题 。 从PhantomJS 1.5开始,它是纯粹的无头的,不再需要运行X11 / Xvfb了。

我尝试使用xvfb运行并导出显示,在init.d中使用shell脚本来启动xvfb,我有一点进一步能够从bash无头无故地运行iceweasel没有问题,但是当它来到phantomjs和硒时,仍然没有雪茄。 我认为这可能只是归结为硒和幻影的版本之间的不兼容,无论是1.9.0还是真正的无头浏览都更加可取。

我正在建立一个工具链,当我找到上面的链接时,我将尝试编译自己,对于任何有兴趣进行交叉编译的人来说, crosstools-ng使生活变得更容易。

我正在运行一个arm6,还有一个使用2.0.0的arm7 编译版本 ,依赖关系是:

 sudo apt-get install flex bison gperf ruby perl libsqlite3-dev libfontconfig1-dev libicu-dev libfreetype6 libssl-dev libpng-dev libjpeg-dev python libX11-dev libxext-dev 

安装过程中,我已经提取二进制文件到Dropbox:

 wget https://www.dropbox.com/s/epj1rji9d239dco/phantomjs chmod +x phantomjs sudo cp phantomjs /usr/bin 

原来的github链接是phantomjs-2.0.0-armv7