見出し画像

Seleniumで使うChrome Driverが"OSError: [WinError 193] %1 は有効な Win32 アプリケーションではありません。"エラーを吐き出した時の対処法

Pythonのseleniumを用いてとあるサイトのスクレイピングを行っていたのですが、前日まで問題なく動いたChrome Driverが、翌日になったらいきなり動かなくなる現象が発生しました。

結論、Windowsのキャッシュ?を削除したら問題なく動くようになったので、同じ現象が起きている方に向けて、解決方法を記入していこうと思います。ぜひ参考にしてみてください。

なお、この記事はWindowsユーザー向けに書いておりますので、ご承知おきください。

起きた現象

seleniumでChrome Driverを使ってスクレイピングしようとすると"OSError: [WinError 193] %1 は有効な Win32 アプリケーションではありません"というエラーが表示され、プログラムが突如動かなくなりました。

前日までは全く問題なく動いていたのに、翌日になると突如動かなくなってしまいました。たまにありますよねこういうこと。

エラーを紐解いていくと、どうやら

service = ChromeService(ChromeDriverManager().install())

この一文でエラーが発生していた模様。つまりここを修正すれば問題ないということでしょうか。

GPTに直し方を聞いてみる

GPTなどにどう直せばよいか聞くと、
「ただしいChrome Driverをインストールし直して、それで実行してください」
とかされましたが、そもそもこの一文って
「最適なクロームドライバーを自動でダウンロードしてきてくれる」
っていう、素晴らしい便利機能だったはず。

この記述のおかげでクロームドライバーをダウンロードする手間が省かれているわけで、新しくドライバーをダウンロードし直して実行するのは非常に意味がわかりません。時代に逆行しています。

直し方

WindowsにあるChrome Driverのキャッシュを消す

結論、Windowsパソコンに入っているChrome Driverを全て削除し、実行し直したらエラーが発生しなくなりました。

このフォルダにあるファイルを全部ぶち消せばOKです

原理は僕も詳しくないし正確なこと言っているか分からないので、定義に拘る方はググってほしいのですが、

service = ChromeService(ChromeDriverManager().install())

を実行すると、Windows内に自動でChrome Driverがキャッシュにダウンロードされ、それを使ってスクレイピングが行われるようです。

今回のエラーは「お前の持ってるWindowsのバージョンと、クロームドライバーのバージョン違うよ!だから実行できないの!(意訳)」というエラーになので、

  • Windowsに残っているクロームドライバーを全部削除

  • その上でプログラムを実行しなおし、新しいドライバーをダウンロード

すれば、バージョンがしっかりと合ったドライバーをダウンロードしてくれて、プログラムが上手く動くようになる、というわけです。

Chrome Driverのある場所

Cドライブの中にユーザーってフォルダがあると思います。僕の場合はその中にある.wdmっていうフォルダの中にdriver系が入っていました。

ユーザーフォルダ内部
.wdmってフォルダにdriversフォルダがあり
その中にchromedriverのフォルダがありました

見つからない!っていう人はユーザーフォルダに入った後

Chrome Driver

出典:僕

って検索すれば見つかると思います。

そうすると「127.~~~」みたいなフォルダが見つかるかと思うので、そのフォルダの中身全部をぶち消してあげましょう。

こいつらを全部消す

その後プログラムを実行すれば、多分動くようになると思われます。
同じ現象で悩んでいる人、ぜひ参考にしてみてください。

いいなと思ったら応援しよう!