質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.37%
Firefox

Mozilla Foundationによって作られた無料、オープンソース、クロスプラットフォームなウェブブラウザ

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Arch Linux

arch(アーク)は、バージョン管理システムです。 また、リポジトリ(アーカイブ)操作を行えるツールの総称として扱われています。

selenium

Selenium(セレニウム)は、ブラウザをプログラムで作動させるフレームワークです。この原理を使うことにより、ブラウザのユーザーテストなどを自動化にすることができます。

Q&A

1回答

7401閲覧

pythonのwebdriverでfirefoxを使う際にエラーが出てしまう

hukuda222

総合スコア13

Firefox

Mozilla Foundationによって作られた無料、オープンソース、クロスプラットフォームなウェブブラウザ

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Arch Linux

arch(アーク)は、バージョン管理システムです。 また、リポジトリ(アーカイブ)操作を行えるツールの総称として扱われています。

selenium

Selenium(セレニウム)は、ブラウザをプログラムで作動させるフレームワークです。この原理を使うことにより、ブラウザのユーザーテストなどを自動化にすることができます。

0グッド

1クリップ

投稿2018/08/21 09:28

編集2018/08/21 12:42

リモート先のArchLinuxからpythonのwebdriverでfirefoxを使ってスクレイピングをしようとしたのですが、以下のようなエラーが出てうまくいきませんでした。

開発環境

Arch linux
python 3.6

コマンド

sudo pacman -Sy --noconfirm unzip icu xorg-server-xvfb && sudo pacman -Sy --noconfirm firefox && wget https://github.com/mozilla/geckodriver/releases/download/v0.21.0/geckodriver-v0.21.0-linux64.tar.gz -O g.tar.gz && yes|tar -zxvf g.tar.gz && rm -rf g.tar.gz && pip3 install selenium && pip3 install pyvirtualdisplay && python3 scrape.py

ソースコード

python:scrape.

1from selenium import webdriver 2from selenium.webdriver.common.desired_capabilities import DesiredCapabilities 3from selenium.webdriver.firefox.firefox_binary import FirefoxBinary 4from pyvirtualdisplay import Display 5from time import sleep 6 7if __name__ == "__main__": 8 display = Display(visible=0, size=(1024, 768)) 9 display.start() 10 11 binary = FirefoxBinary("/usr/sbin/firefox") 12 binary.add_command_line_options("-headless") 13 cap = DesiredCapabilities().FIREFOX.copy() 14 cap["marionette"] = False 15 cap["firefox_binary"] = "/usr/sbin/firefox" 16 driver = webdriver.Firefox( 17 firefox_binary=binary, 18 executable_path="./geckodriver", capabilities=cap) 19 20 driver.get("https://www.google.com/") 21 driver.close() 22 display.stop()

エラー文

Traceback (most recent call last): File "scrape.py", line 12, in <module> driver = webdriver.Firefox(executable_path="./geckodriver", capabilities=cap) File "/usr/lib/python3.6/site-packages/selenium/webdriver/firefox/webdriver.py", line 184, in __init__ self.binary, timeout) File "/usr/lib/python3.6/site-packages/selenium/webdriver/firefox/extension_connection.py", line 52, in __init__ self.binary.launch_browser(self.profile, timeout=timeout) File "/usr/lib/python3.6/site-packages/selenium/webdriver/firefox/firefox_binary.py", line 73, in launch_browser self._wait_until_connectable(timeout=timeout) File "/usr/lib/python3.6/site-packages/selenium/webdriver/firefox/firefox_binary.py", line 104, in _wait_until_connectable "The browser appears to have exited " selenium.common.exceptions.WebDriverException: Message: The browser appears to have exited before we could connect. If you specified a log_file in the FirefoxBinary constructor, check it for details.

追記

sudo pacman -Sy --noconfirm firefox firefox-adblock-plus firefox-noscript
を実行することで上記のエラーは起こらなくなったのですが、代わりに以下のようなエラーが出るようになりました。このエラーの解決方法をご教授ください。

エラー文

selenium.common.exceptions.WebDriverException: Message: Can't load the profile. Possible firefox version mismatch. You must use GeckoDriver instead for Firefox 48+. Profile Dir: /tmp/tmpvwp6fuam If you specified a log_file in the FirefoxBinary constructor, check it for details.

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

確かFierefoxだと、headlessではそのまま動かないと思います。

解決法としては、geckdriver(https://github.com/mozilla/geckodriver/issues/1159)を使う。

※この記事の中頃からが参考になります。
https://vaaaaaanquish.hatenablog.com/entry/2017/08/31/172020

もしくはFirefoxに特段のこだわりが無ければPhantomJSを使うのがオススメです。

投稿2018/08/21 09:44

YugoNakashima

総合スコア42

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hukuda222

2018/08/21 10:10 編集

ご回答ありがとうございます。geckodriverはすでに使っています。webdriver.Firefoxの引数にexecutable_pathとしてパスを記載しています。 二つ目のリンク先の記事では同様のエラーが出ていますが、その記事と同様にbinary.add_command_line_optionsを使ってheadlessの指定をしているので関係ないのではないかと思います。 また、firefoxにこだわりはないですが、PhantomJSはメンテナンスが終了しているのでできれば使わない方向で実装したいと考えています。
YugoNakashima

2018/08/22 11:57

お、失礼いたしました。 他の方法を考えてみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.37%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問