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

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

新規登録して質問してみよう
ただいま回答率
85.48%
スクレイピング

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

Python

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

Q&A

解決済

1回答

1192閲覧

chromedriver の更新(python)について

huchamon

総合スコア4

スクレイピング

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

Python

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

0グッド

0クリップ

投稿2021/09/18 08:16

クロームのブラウザを自動で開きたく、下記のコードで利用していたのですが、最近MACをアップデートしてからエラーが起きるようになりました。

エラーからはchromedriverの更新がなされていないことが原因だと読み取れます。
コードの中でchromedriverの更新がなされていると思っていたのですが、間違っていたのでしょうか?

python

1from selenium import webdriver 2from time import sleep 3sleep(3) 4 5from webdriver_manager.chrome import ChromeDriverManager 6 7 8driver = webdriver.Chrome(ChromeDriverManager().install()) 9driver.get('https://google.com') 10 11browser = webdriver.Chrome()

エラーコード

selenium.common.exceptions.SessionNotCreatedException: Message: session not created: This version of ChromeDriver only supports Chrome version 91 Current browser version is 93.0.4577.82 with binary path /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

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

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

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

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

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

jbpb0

2021/09/18 08:28 編集

エラーが出るのは、どの行でしょうか? > driver = webdriver.Chrome(ChromeDriverManager().install()) ではエラーが出ず、 > browser = webdriver.Chrome() ではエラーが出るのなら、前者と後者で使われてる「ChromeDriver」が異なってるのではないですかね
huchamon

2021/09/18 10:47

ありがとうございます。 デバッグでは後者の行でエラーを吐きました。 使用しているwebdriverが異なる場合、確認の方法、修正方法等分かりましたら教えて頂けませんか?
jbpb0

2021/09/18 11:21

ターミナルで which -a chromedriver を実行したら、何か引っかかりませんか?
huchamon

2021/09/19 09:26

ターミナルで実行したら一件だけchromedriverが見つかりました。 しかし、どこにあるのかや、アップデートされているかの確認方法が分かりません。 無知で申し訳ありませんが教えて頂ければ幸いです。 which -a chromedriver /usr/local/bin/chromedriver
huchamon

2021/09/20 08:42

下記の場所にあるchromedriverが古いバージョンとなっており、余計なのだと思い、削除致しました。 /usr/local/bin/chromedriver しかし、今度は下記の様なエラーコードが発生し、実行出来ませんでした。更新されているchromedriverはありそうなのですが、プログラムの場所が悪いということなのでしょうか?お教え頂ければ幸いです。 エラーコード ====== WebDriver manager ====== Current google-chrome version is 93.0.4577 Get LATEST driver version for 93.0.4577 Driver [/Users/ユーザ名/.wdm/drivers/chromedriver/mac64/93.0.4577.63/chromedriver] found in cache Traceback (most recent call last): File "/Users/ユーザ名/PycharmProjects/pythonProject4/venv/lib/python3.8/site-packages/selenium/webdriver/common/service.py", line 72, in start self.process = subprocess.Popen(cmd, env=self.env, File "/Users/ユーザ名/PycharmProjects/anaconda/anaconda3/lib/python3.8/subprocess.py", line 854, in __init__ self._execute_child(args, executable, preexec_fn, close_fds, File "/Users/ユーザ名/PycharmProjects/anaconda/anaconda3/lib/python3.8/subprocess.py", line 1702, in _execute_child raise child_exception_type(errno_num, err_msg, err_filename) FileNotFoundError: [Errno 2] No such file or directory: 'chromedriver' During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/Users/ユーザ名/PycharmProjects/pythonProject4/python_use/accountbook/login3.py", line 15, in <module> browser = webdriver.Chrome() File "/Users/ユーザ名/PycharmProjects/pythonProject4/venv/lib/python3.8/site-packages/selenium/webdriver/chrome/webdriver.py", line 73, in __init__ self.service.start() File "/Users/ユーザ名/PycharmProjects/pythonProject4/venv/lib/python3.8/site-packages/selenium/webdriver/common/service.py", line 81, in start raise WebDriverException( selenium.common.exceptions.WebDriverException: Message: 'chromedriver' executable needs to be in PATH. Please see https://sites.google.com/a/chromium.org/chromedriver/home
jbpb0

2021/09/20 08:45 編集

> どこにあるのか 「/usr/local/bin」にあります 過去にbrewで入れたことありませんか? https://qiita.com/lemtosh469/items/da86d1ce919d458a8d8d > アップデートされているかの確認 ターミナルで /usr/local/bin/chromedriver --version を実行したら、何て表示されますか?
jbpb0

2021/09/20 08:57 編集

> 下記の場所にあるchromedriverが古いバージョンとなっており、余計なのだと思い、削除致しました。 /usr/local/bin/chromedriver たぶんそれが古いやつだと思いますが、削除する前にバージョンを確認した方がよかったですよ あと、それがbrewで入れたものだったなら、brewを使わずに削除したら、brewが管理してるデータと矛盾するので、brewを使って削除すべきです brewで入れたのではなく、ファイルの普通のコピーで「/usr/local/bin」に置いたのなら、普通に削除してかまいませんが
jbpb0

2021/09/20 09:05 編集

https://github.com/SergeyPirogov/webdriver_manager の「With webdriver manager, you just need to do two simple steps:」と書いてあるところのちょっと下の「Use with Chrome:」のところに driver = webdriver.Chrome(ChromeDriverManager().install()) と書く方法しか説明されてないのだから、毎回そのやり方で実行しないといけないのではないですかね 「webdriver_manager」が「chromedriver」を置いてる場所を探して、そこを環境変数PATHに追加したら、 driver = webdriver.Chrome(ChromeDriverManager().install()) を実行しなくても大丈夫になるかもしれませんが、 https://github.com/SergeyPirogov/webdriver_manager にその方法の説明が無いので、その方法は「webdriver_manager」の作者が推奨する方法ではないのだろうと思います
huchamon

2021/09/20 09:20

何度もコメント頂きありがとうございます。 brew でインストールしていました。今回の削除はbrewで行っていなかったので今後は気を付けます。 brewコマンドでインストールをし直したら動くようになりました。 (コマンドで確認するとバージョンも最新になっていました。 /usr/local/bin/chromedriver --version ChromeDriver 93.0.4577.63) ありがとうございます。 driver = webdriver.Chrome(ChromeDriverManager().install())の更新はbrewでchromedriverをインストールしていた場合は効果がなく、毎回brewでアップデートする必要があるということでしょうか?
jbpb0

2021/09/21 07:36 編集

webdriver.Chrome(ChromeDriverManager().install()) とした時は、「webdriver_manager」が入れた「chromedriver」が使われます 「webdriver_manager」は、Chromeのバージョンに合わせたのを常に入れてくれるので、上記を実行した場合は問題ありません 「webdriver_manager」が入れた「chromedriver」を使いたければ、常に webdriver.Chrome(ChromeDriverManager().install()) とする必要があります (brewで入れてるかどうかは関係無い) webdriver.Chrome() とした時は、「webdriver_manager」が入れた「chromedriver」は使われず、環境変数PATHで見つけた「chromedriver」があれば、それが使われます 元々「/usr/local/bin」に有ったのはバージョンが古かったのでエラーになり、この質問がされたわけですよね それを削除したらPATH上に見つからないので、 > No such file or directory: 'chromedriver' というエラーになりました brewで新しいのを入れたら、Chromeのバージョンと合うので現状はうまく動きますが、その内にまた同じことになり、brewでアップデートすることになります 【追記】 webdriver.Chrome(ChromeDriverManager().install()) をやって、「webdriver_manager」が入れた新しい「chromedriver」を、次に webdriver.Chrome() をやった時に使えるようにするには、いくつか前のコメントに書いたように、「webdriver_manager」が「chromedriver」を置いてる場所を環境変数PATHに追加する必要があります それをやらない場合は、何回 webdriver.Chrome(ChromeDriverManager().install()) をやろうが、 webdriver.Chrome() はそれとは関係無いです
huchamon

2021/09/20 12:22

ブラウザを改めて開く動作を行うときに、webdriver.Chrome()としていたため環境PATHが必要になっていたということですね。 詳しく教えて頂き助かりました。 何か回答として記入して頂ければベストアンサーとさせて頂きます。
guest

回答1

0

ベストアンサー

「webdriver_manager」が入れた「chromedriver」を使いたければ、常に

python

1webdriver.Chrome(ChromeDriverManager().install())

とする必要があります

 
そうせずに、

python

1webdriver.Chrome()

とした時は、「webdriver_manager」が入れた「chromedriver」は使われず、環境変数PATH上に見つかった「chromedriver」があれば、それが使われます
それが更新されず古いものが入ってたら、質問のようなエラーになります

環境変数PATH上にあるかは、
ターミナルで

sh

1which -a chromedriver

を実行したら分かります

また、環境変数PATH上にあるもののバージョンは、ターミナルで

sh

1chromedriver --version

を実行したら分かります

投稿2021/09/21 07:34

jbpb0

総合スコア7651

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問