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を全て削除し、実行し直したらエラーが発生しなくなりました。
原理は僕も詳しくないし正確なこと言っているか分からないので、定義に拘る方はググってほしいのですが、
service = ChromeService(ChromeDriverManager().install())
を実行すると、Windows内に自動でChrome Driverがキャッシュにダウンロードされ、それを使ってスクレイピングが行われるようです。
今回のエラーは「お前の持ってるWindowsのバージョンと、クロームドライバーのバージョン違うよ!だから実行できないの!(意訳)」というエラーになので、
Windowsに残っているクロームドライバーを全部削除
その上でプログラムを実行しなおし、新しいドライバーをダウンロード
すれば、バージョンがしっかりと合ったドライバーをダウンロードしてくれて、プログラムが上手く動くようになる、というわけです。
Chrome Driverのある場所
Cドライブの中にユーザーってフォルダがあると思います。僕の場合はその中にある.wdmっていうフォルダの中にdriver系が入っていました。
見つからない!っていう人はユーザーフォルダに入った後
って検索すれば見つかると思います。
そうすると「127.~~~」みたいなフォルダが見つかるかと思うので、そのフォルダの中身全部をぶち消してあげましょう。
その後プログラムを実行すれば、多分動くようになると思われます。
同じ現象で悩んでいる人、ぜひ参考にしてみてください。