でヘッドレスブラウザとしてPhantomJS
を使用してSelenium WebDriver
を使用してPythonスクリプトを実行したい)Raspbianを実行しているRaspberry Pi。
私はもともとOSXでスクリプトを作成しましたが、そこでは正常に動作します。しかし、それをRaspberryで機能させようとすると、問題が発生します。
スクリプトを実行しようとすると、次のエラーが発生します。
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)
他の人が私のものに似た問題を抱えているのを見てきました-さまざまな解決策があります-ほとんどは自分でPhantomJSを構築するか、Raspberryに適合したGithubブランチを複製してインストールする必要があります(現在はメインのPhantomJSプロジェクトと同期していません)。
/usr/local/bin
などに手動でインストールすることを含む場合、どうすればよいですか? PhantomJS Webページ で利用可能なバイナリはlinux-x86
およびlinux-i686
用であるため、Raspberry Pi 2 Bでは機能しないと想定しています。 )ARM Cortex A-7プロセッサ。Python 2.7.9
を使用していますvirtualenv
を作成し、すべてのPythonモジュールをインストールしました。例:pip install Selenium
、ここでスクリプトを実行してみますSudo apt-get install phantomjs
を介してPhantomJSの最新バージョンをインストールしましたufw
ファイアウォールを無効にしましたさて、私は解決策から始めます、ここに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
だからphantomjsはあなたの道になります。
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 Selenium on the Raspberry Pi?
<Selenium.webdriver.phantomjs.webdriver.WebDriver (session="b184e110-f9c4-11e5-aede-7f5c42f062d7")>
faq から。 PhantomJS 1.5以降、これは純粋なヘッドレスであり、X11/Xvfbを実行する必要はありません。。
xvfb-runを使用して表示をエクスポートし、init.dのシェルスクリプトを使用してxvfbを起動してみましたが、もう少し実行できるようになりましたbashヘッドレスのiceweaselは問題ありませんが、phantomjsとSeleniumに関しては葉巻はありません。 1.9.0を使用していて、実際のヘッドレスブラウジングの方がはるかに望ましいにもかかわらず、Seleniumとphantomjsのバージョンとの非互換性に帰着する可能性があると思います。
私はツールチェーンをセットアップしている最中で、上記のリンクを見つけたときに自分でコンパイルしようとしていました。クロスコンパイルに興味のある人は、 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
インストール手順、私はドロップボックスにバイナリを抽出しました:
wget https://www.dropbox.com/s/epj1rji9d239dco/phantomjs
chmod +x phantomjs
Sudo cp phantomjs /usr/bin
元のgithubリンクは phantomjs-2.0.0-armv7
このphantomjsファイルをダウンロード https://drive.google.com/open?id=1x063Krw6mZkRYW4K238a3EyRdklj5Evj
必要なフォルダに置き換えます。
777 chmodを与える:chmod 777 phantomjs
そして使ってみてください。
Grafanaの場合-phantomjsファイルは次のフォルダにある必要があります:/usr/share/grafana/tools/phantomjs/
。
このバイナリファイルは、Banana pi M3 Debian 9で動作します。アーキテクチャ:armarmv7l。カーネル4.20.7-sunxi
これが私がそれをした方法です:
For 64-bit system, download phantomjs-1.9.7-linux-x86_64.tar.bz2 (12.6 MB).
For 32-bit system, download phantomjs-1.9.7-linux-i686.tar.bz2 (12.9 MB).
Step 1> $ wget https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-1.9.7-linux-x86_64.tar.bz2
Step 2> $ tar -xvf phantomjs-1.9.7-linux-x86_64.tar.bz2
Step 3> $ cd phantomjs-1.9.7-linux-x86_64
Step 4> $ cd bin
Step 5> $ Sudo cp phantomjs /usr/bin
To check phantomjs installed properly perform the following step :
Step 6> $ phantomjs -h
To install the dependencies on Red Hat based systems:
Step 7> $ Sudo yum install fontconfig freetype libfreetype.so.6 libfontconfig.so.1 libstdc++.so.6