🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
スクレイピング

スクレイピングとは、公開されているWebサイトからページ内の情報を抽出する技術です。

Chrome

Google Chromeは携帯、テレビ、デスクトップなどの様々なプラットフォームで利用できるウェブブラウザです。Googleが開発したもので、Blink (レンダリングエンジン) とアプリケーションフレームワークを使用しています。

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

selenium

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

Q&A

1回答

3943閲覧

seleniumを使ってスクレイピングをしたいがchromedriverのPATHが通らない

sakihokusho

総合スコア0

スクレイピング

スクレイピングとは、公開されているWebサイトからページ内の情報を抽出する技術です。

Chrome

Google Chromeは携帯、テレビ、デスクトップなどの様々なプラットフォームで利用できるウェブブラウザです。Googleが開発したもので、Blink (レンダリングエンジン) とアプリケーションフレームワークを使用しています。

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

selenium

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

0グッド

0クリップ

投稿2020/11/25 16:20

PythonでWebスクレイピングをしたいのですが、Javascript有効化の問題を突破する為、Selenium、chromedriverをインストールし、PATHを通すところまで完了した、はずだったのですが、PATHが通っていないというエラーが出てしまい、困っています。

前提・実現したいこと

chromedriverのPATHを通し、Seleiumを使えるようにしたい

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

FileNotFoundError Traceback (most recent call last) ~/conda/envs/python/lib/python3.6/site-packages/selenium/webdriver/common/service.py in start(self) 75 stderr=self.log_file, ---> 76 stdin=PIPE) 77 except TypeError: ~/conda/envs/python/lib/python3.6/subprocess.py in __init__(self, args, bufsize, executable, stdin, stdout, stderr, preexec_fn, close_fds, shell, cwd, env, universal_newlines, startupinfo, creationflags, restore_signals, start_new_session, pass_fds, encoding, errors) 728 errread, errwrite, --> 729 restore_signals, start_new_session) 730 except: ~/conda/envs/python/lib/python3.6/subprocess.py in _execute_child(self, args, executable, preexec_fn, close_fds, pass_fds, cwd, env, startupinfo, creationflags, shell, p2cread, p2cwrite, c2pread, c2pwrite, errread, errwrite, restore_signals, start_new_session) 1363 err_msg += ': ' + repr(err_filename) -> 1364 raise child_exception_type(errno_num, err_msg, err_filename) 1365 raise child_exception_type(err_msg) FileNotFoundError: [Errno 2] No such file or directory: '/usr/local/bin/chromedriver': '/usr/local/bin/chromedriver' During handling of the above exception, another exception occurred: WebDriverException Traceback (most recent call last) <ipython-input-42-9e1071cc12e0> in <module> 1 chrome_path = r'/usr/local/bin/chromedriver' ----> 2 driver = webdriver.Chrome(executable_path=chrome_path) ~/conda/envs/python/lib/python3.6/site-packages/selenium/webdriver/chrome/webdriver.py in __init__(self, executable_path, port, options, service_args, desired_capabilities, service_log_path, chrome_options, keep_alive) 71 service_args=service_args, 72 log_path=service_log_path) ---> 73 self.service.start() 74 75 try: ~/conda/envs/python/lib/python3.6/site-packages/selenium/webdriver/common/service.py in start(self) 81 raise WebDriverException( 82 "'%s' executable needs to be in PATH. %s" % ( ---> 83 os.path.basename(self.path), self.start_error_message) 84 ) 85 elif err.errno == errno.EACCES: WebDriverException: Message: 'chromedriver' executable needs to be in PATH. Please see https://sites.google.com/a/chromium.org/chromedriver/home

該当のソースコード

Python

1chrome_path = r'/usr/local/bin/chromedriver' 2driver = webdriver.Chrome(executable_path=chrome_path)

↓別セルで以下も実行しています。

Python

1!pip install selenium 2from selenium import webdriver 3import chromedriver_binary

試したこと

chromeとインストールしたchromedriverのバージョンが一致している事を確認(87.0.4280.20)
Terminalでは、Seleniumに関してはSuccessfully installed selenium-3.141.0、chromedriverに関してはchromedriver was successfully installed!と表示されており、インストール自体は上手く行っている事を確認。
PATHはこんな感じです↓
/usr/local/bin:/Users/sakikawamura/opt/anaconda3/bin:/Users/sakikawamura/opt/anaconda3/condabin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin

補足情報(FW/ツールのバージョンなど)

MacOS Catalina Ver10.15.3
Python

初学者なのでとにかく調べながら進めているのですが、どうにも詰まってしまって困っています。
何かライブラリのインストールが足りなかったりするのでしょうか。
情報が足りていない事もあるかと思いますが、どなたか助けて頂けると嬉しいです、、、

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

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

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

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

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

tetsunosuke

2020/11/26 01:17

あら、、うまく行かなかったんですね 関連質問として前回の質問を貼っておきます https://teratail.com/questions/306088 で、!pip という表現からJupyterLabでやっているのかな?と思いました。 https://qiita.com/gabiQ/items/18836611b47d2a1e56c4 こちらの記事で言う !pip install chromedriver_binary==chromedriverのバージョン をやったときに、 chromedriver was successfully installed! と出たということでしょうか?
sakihokusho

2020/11/27 16:49

返信遅くなり申し訳ないです、私の環境で、回答で頂いたコードと同じものを実行すると、以下の通りエラーとなります。 !pip install chromedriver_binary=="87.0.4280.20" については、以下の通りインストール成功が返ってきます。 Successfully built chromedriver-binary Installing collected packages: chromedriver-binary Successfully installed chromedriver-binary-87.0.4280.20.0 ↓エラー --------------------------------------------------------------------------- WebDriverException Traceback (most recent call last) <ipython-input-2-1015524b1205> in <module> 3 from selenium import webdriver 4 import chromedriver_binary ----> 5 driver = webdriver.Chrome() 6 driver.get('https://www.google.com/' class="ansi-blue-fg">) ~/conda/envs/python/lib/python3.6/site-packages/selenium/webdriver/chrome/webdriver.py in __init__(self, executable_path, port, options, service_args, desired_capabilities, service_log_path, chrome_options, keep_alive) 71 service_args=service_args, 72 log_path=service_log_path) ---> 73 self.service.start() 74 75 try: ~/conda/envs/python/lib/python3.6/site-packages/selenium/webdriver/common/service.py in start(self) 96 count = 0 97 while True: ---> 98 self.assert_process_still_running() 99 if self.is_connectable(): 100 break ~/conda/envs/python/lib/python3.6/site-packages/selenium/webdriver/common/service.py in assert_process_still_running(self) 109 raise WebDriverException( 110 'Service %s unexpectedly exited. Status code was: %s' --> 111 % (self.path, return_code) 112 ) 113 WebDriverException: Message: Service chromedriver unexpectedly exited. Status code was: 127
tetsunosuke

2020/11/28 01:12

お、とはいえ、エラーメッセージが変わったようですね。 https://qiita.com/taikomegane/items/58184ea359788ff32147 こちらの記事によれば、chromedriver単体での実行を試すことでエラーの原因がわかりそうでした。 いくつかのchromedriverが入ってしまっている可能性がありますが、参考までに私の環境では下記にありましたので、 ~/miniconda3/lib/python3.8/site-packages/chromedriver_binary/chromedriver sakihokushoさんの環境では ~/conda/envs/python/lib/python3.6/site-packages/chromedriver_binary/chromedriver の実行を試してみていただけますか
sakihokusho

2020/11/30 21:11

すみません、ちょっとこの部分→”sakihokushoさんの環境では ~/conda/envs/python/lib/python3.6/site-packages/chromedriver_binary/chromedriver の実行を試してみていただけますか”が、理解しきれず、代わりに共有頂いたリンク先(https://qiita.com/taikomegane/items/58184ea359788ff32147)と同様のコードを実施してみましたが、足りていないと思われるライブラリをインストールしようとしたところ、(!apt install libnss3-dev)、以下のようなエラーコードとなりました。 E: Could not open lock file /var/lib/dpkg/lock-frontend - open (13: Permission denied) E: Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), are you root? これを受けて、”!sudo apt-get update”を試しましたが、今度は”/bin/bash: sudo: command not found”とエラーが発生しました。 正直こんなに複雑だとは思っておらず、混乱しています。 もう少し調べて色々試してみようとは思っておりますが、sudoのPATHを通せば、万事解決となるのでしょうか…
tetsunosuke

2020/12/01 00:29

少し誤解させてしまったようですみません aptのコマンドはUbuntuなどの別のOSの話で、そのままやっても意味はありません今回見てもらいたかったのはあくまでもchromedriverが実行できるのか?という点でした。 > ~/conda/envs/python/lib/python3.6/site-packages/chromedriver_binary/chromedriver の実行を試してみていただけますか こちらはMacのターミナルにそのまま貼り付けて実行するか、spotlightやfinderでの検索結果を実行、という意味です。
sakihokusho

2020/12/01 16:34

理解致しました。 ターミナルで”~/conda/envs/python/lib/python3.6/site-packages/chromedriver_binary/chromedriver”を実行したところ、 ”zsh: no such file or directory: /Users/sakikawamura/conda/envs/python/lib/python3.6/site-packages/chromedriver_binary/chromedriver”という回答になりました。 chromedriver単独で実行すると、以下の通り返ってきます。 ”Starting ChromeDriver 87.0.4280.20 (c99e81631faa0b2a448e658c0dbd8311fb04ddbd-refs/branch-heads/4280@{#355}) on port 9515 Only local connections are allowed. Please see https://chromedriver.chromium.org/security-considerations for suggestions on keeping ChromeDriver safe. ChromeDriver was started successfully.”
tetsunosuke

2020/12/02 01:01

なんと。~conda 以下に入っていると思ったのですがそこではなかったですか... (そのへんになんらかの問題がありそうな気はしますが) とりあえず単独での実行については問題なさそうですね。 私のchromedriverと全く同じ動作をしています。 となるとそのchromedriverのPATHを webdriver.Chrome(executable_path=〜) で通してあげると、意図したものを起動できそうな気がします。 ※ ちなみに、他にchromedriverはインストールされていなかったですか?あったらそいつが悪さをしてそうなのですが やりたいことは全然別のことなのに環境構築で時間がかかっちゃって大変ですが...もうちょっとな気がします。
sakihokusho

2020/12/02 16:45

ありがとうございます、ちょっと数日一旦作業から離れますので、また進捗共有させていただきます。
guest

回答1

0

!pip install selenium !pip install chromedriver_binary=="87.0.4280.20" from selenium import webdriver import chromedriver_binary driver = webdriver.Chrome() driver.get('https://www.google.com/')

私の環境ではJupyterLabにて、上記で実行できました。
import chromedriver_binary でパスの指定は特にいらなくなるはずです。

ただし、以下の問題が一度起きました。
https://qiita.com/apukasukabian/items/77832dd42e85ab7aa568

投稿2020/11/26 01:43

tetsunosuke

総合スコア1295

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問