夜はだいぶ涼しくなってきて、いよいよ夏の終わりと秋の始まりを
感じるような季節になってきましたね。
コロナ禍による私生活の大きな変化が起こってから久しいですが、
皆様いかがお過ごしでしょうか。
今回は、Selenium を使った自動スクレイピングツールが
失敗してしまう事象があったので、その事象内容の詳細と
対応策を備忘録として記載しておこうと思います。
事象の詳細
僕自身の趣味の一環として、
Python と Selenium を使ってウェブスクレイピングするツールを作成し、
自宅の PC で毎日定期実行させていました。
ところが先日、なんかツールの動作がおかしい?と思い、
ツールが吐いているログを見てみたところ、以下のようなエラーが数日間出続けていました。。。
(自作ツールとはいえ、しっかりと定期的に動作確認しておかないと駄目ですね。反省です。)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
Failed to Get WebDriver. Message: session not created: This version of ChromeDriver only supports Chrome version 80 Traceback (most recent call last): File "main.py", line 105, in <module> File "site-packages\selenium\webdriver\chrome\webdriver.py", line 81, in __init__ File "site-packages\selenium\webdriver\remote\webdriver.py", line 157, in __init__ File "site-packages\selenium\webdriver\remote\webdriver.py", line 252, in start_session File "site-packages\selenium\webdriver\remote\webdriver.py", line 321, in execute File "site-packages\selenium\webdriver\remote\errorhandler.py", line 242, in check_response selenium.common.exceptions.SessionNotCreatedException: Message: session not created: This version of ChromeDriver only supports Chrome version 80 2020-10-03 05:56:04,007 [WARNING ] [main#<module> 110] Program Exit. |
内容を調べたところでは、Selenium で呼び出すはずの GoogleChrome と、
Selenium WebDriver とのバージョンに差異があることで発生するエラーでした。
対応策としては、Chrome のバージョンを下げるか、
ChromeDriver のバージョンを上げるか のどちらかです。
ただ、どうも GoogleChrome のバージョン自動アップデートや
ダウングレードは、ユーザー設定画面からは対応できないようでしたので、
対応策としてはChromeDriver のバージョンアップ一択ということですね。
|
|
ChromeDriver のバージョンアップ
とりあえずの解決策として、ChromeDriver のバージョンアップを行いました。
ChromeDriver のバージョンアップについては、何も難しいことはありません。
以下のサイトから、使用している GoogleChrome に対応した
ChromeDriver をダウンロードしてきて、Python プログラムが呼び出せるパスに配置してあげればよいです。
|
|
根本的な解決策(GoogleChromeの自動アップデート停止)
そもそも今回のエラーが発生した原因ですが、
『Python プログラム作成当初は一致していた GoogleChrome と ChromeDriver のバージョンが、
GoogleChrome の自動アップデート機能によってバージョン差異が出てしまった』ことにあります。
そのため、もし今回 ChromeDriver のバージョンをアップしたとしても、
数週間から数か月後には、GoogleChrome の自動アップデートが入り、
また ChromeDriver とバージョン差分が出てきてしまいます。
その度に ChromeDriver をダウンロードしてくるのはかなり面倒です。
というわけで、根本的に GoogleChrome の自動バージョンアップを
停止させてしまうことにしました。
かなり簡単な方法なので、同様の事象でお困りの方は試してみてください。
(セキュリティ上のリスクもあることを念頭に置き、自己責任にて行ってくださいね)
GoogleChrome の自動バージョンアップを停止する
GoogleChrome では、
ローカルディスク(C)>Program Files(x86)>Google>Update
配下にある 「GoogleUpdate.exe」というファイル削除またはリネームすることで、
自動アップデートを行わなくできます。
「GoogleUpdate.exe」を削除してしまうと、今後アップデートできなくなってしまうため、
今回はファイルをリネームする方針としました。
以下、リネーム前後の様子です。
【リネーム前】
【リネーム後】
これでGoogle Chrome の自動アップデートは停止されました。
GoogleChrome の自動バージョンアップ停止を確認する
ここまで実施したら、GoogleChrome を起動し、ユーザー設定メニューから
GoogleChrome のバージョン確認画面を見てみます。
下図のようにエラーになれば、自動アップデートが停止(失敗)しています。
確認は以上です。
|
|
最後に
上述の通り、GoogleChrome は、ユーザー設定画面からは
自動アップデートの停止設定とかは行えないのですが、
セキュリティ上のリスクを低減するためとは言え、Chrome をツールやテストで
使用することが多い人間にとっては、結構不便に感じました。
ここら辺、Chrome のアップデートを検知して、それに対応する
ChromeDriver を自動ダウンロードしてくれるツールとか作成できれば格好いいですね。
今後時間があるときに挑戦してみようと思います。
今回この記事を作成するにあたり、以下のページを参考にさせていただきました。
ありがとうございました。
コメント