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

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

ただいまの
回答率

90.75%

  • Python 3.x

    5327questions

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

  • Webサイト

    1008questions

    一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

  • selenium

    458questions

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

Pythonでphantomjsの起動がうまく行きません

解決済

回答 1

投稿

  • 評価
  • クリップ 1
  • VIEW 128

moseushi_cho

score 3

 前提・実現したいこと

webスクレイピングでログインページにアクセスし、ログインサイトの情報を取得したい。

 発生している問題・エラーメッセージ

jupyterにてwebスクレイピングのコードを試しています。seleniumでphantomjsを使ってログインページからログインし、ログイン後のサイトの情報を取ってこようとしていますが、下記のエラーコードが吐き出されうまく行きません。

WebDriverException: Message: 'phantomjs' executable needs to be in PATH. 

コマンドプロンプト上でphantomjs -vコマンドでバージョン情報は表示されるので、phantomjsのインストールには成功していると思います。よろしくお願い致します。

 該当のソースコード

from selenium import webdriver
browser = webdriver.PhantomJS()

loginUrl= '***'
browser.get(loginUrl)

username = '***'
password = '***'

userNameField = browser.find_element_by_xpath('//*[@id="sign_in_session_service_email"]')
userFameField.send_keys(username)

passwordField = browser.find_element_by_xpath('//*[@id="sign_in_session_service_password"]')
passwordField.send_keys(password)

submitButton = browser.find_element_by_class_name('//*[@id="login-btn-sumit"]')
submitButton.click()

browser.title
  • 気になる質問をクリップする

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

0

こちらの方法で明示的にパスを指定してみては?

Make the path in raw string, add 'r': 

driver = webdriver.PhantomJS(executable_path=r'D:\Python\phantomjs-2.0.0-windows\bin\phantomjs.exe')

python - Selenium/PhantomJS raises error - Stack Overflow

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/04/24 00:00

    ご回答ありがとうございます。

    phantomはCドライブ直下に保存したため、下記のようにすることで解決いたしました。
    browser = webdriver.PhantomJS(executable_path=r'C:\phantomjs\bin\phantomjs.exe')

    Phantomの問題は解決したようですが、webスクレイピングはうまくいってないようで、下記ようなエラーコードが返ってきてしまいました。

    InvalidElementStateException Traceback (most recent call last)
    <ipython-input-5-a00d008809b1> in <module>()
    13 passwordField.send_keys(password)
    14
    ---> 15 submitButton = browser.find_element_by_class_name('//*[@id="login-btn-sumit"]')
    16 submitButton.click()
    17

    ~\Anaconda3\lib\site-packages\selenium\webdriver\remote\webdriver.py in find_element_by_class_name(self, name)
    553 element = driver.find_element_by_class_name('foo')
    554 """
    --> 555 return self.find_element(by=By.CLASS_NAME, value=name)
    556
    557 def find_elements_by_class_name(self, name):

    ~\Anaconda3\lib\site-packages\selenium\webdriver\remote\webdriver.py in find_element(self, by, value)
    953 return self.execute(Command.FIND_ELEMENT, {
    954 'using': by,
    --> 955 'value': value})['value']
    956
    957 def find_elements(self, by=By.ID, value=None):

    ~\Anaconda3\lib\site-packages\selenium\webdriver\remote\webdriver.py in execute(self, driver_command, params)
    310 response = self.command_executor.execute(driver_command, params)
    311 if response:
    --> 312 self.error_handler.check_response(response)
    313 response['value'] = self._unwrap_value(
    314 response.get('value', None))

    ~\Anaconda3\lib\site-packages\selenium\webdriver\remote\errorhandler.py in check_response(self, response)
    240 alert_text = value['alert'].get('text')
    241 raise exception_class(message, screen, stacktrace, alert_text)
    --> 242 raise exception_class(message, screen, stacktrace)
    243
    244 def _value_or_default(self, obj, key, default):

    InvalidElementStateException: Message: {"errorMessage":"SyntaxError: DOM Exception 12","request":{"headers":{"Accept":"application/json","Accept-Encoding":"identity","Connection":"close","Content-Length":"117","Content-Type":"application/json;charset=UTF-8","Host":"127.0.0.1:49497","User-Agent":"Python http auth"},"httpVersion":"1.1","method":"POST","post":"{\"using\": \"class name\", \"value\": \"//*[@id=\\\"login-btn-sumit\\\"]\", \"sessionId\": \"1c751090-4706-11e8-86e9-7f53ce626278\"}","url":"/element","urlParsed":{"anchor":"","query":"","file":"element","directory":"/","path":"/element","relative":"/element","port":"","host":"","password":"","user":"","userInfo":"","authority":"","protocol":"","source":"/element","queryKey":{},"chunks":["element"]},"urlOriginal":"/session/1c751090-4706-11e8-86e9-7f53ce626278/element"}}
    Screenshot: available via screen

    キャンセル

  • 2018/04/24 00:10 編集

    そっちのエラーについては、この質問自体の趣旨とずれるのと、一応調べてみてますが私が必ず回答できる自信もないので、改めて質問を立てることをおすすめします。

    キャンセル

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

  • ただいまの回答率 90.75%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • Python 3.x

    5327questions

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

  • Webサイト

    1008questions

    一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

  • selenium

    458questions

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