技術は使ってなんぼ

自分が得たものを誰かの役に立てたい

【Python】Windows11のOSでInternetExplorerをSeleniumで立ち上げる方法

InternetExplorer(以下IE)をご存知でしょうか。

私は3年ぐらい前に消滅したと思っていたブラウザですが、今でもシステムとして使ってる企業は多いようです。

特に古いシステムほどIEでしか動かないとかあるようで、2022年6月15日にはサポート終了するのに日本大丈夫か・・。

ギリギリまで使いたいお客さんも当然いらっしゃるので、IEでのスクレイピングしたいという依頼がありました。

今回、地味に設定が面倒だったのと、軽くハマったこともあって手順を記載します。

ちなみにOSがWindows10でもいけます。
Windows10については後述します。

Windows11だとIEは強制的にEdgeで表示される「IEモード」になるのですが、まぁ無理くり開けます。

開けますが、個人的にまともに動かそうと思わず、どーしても仕方なくIEでしか開けないサイト限定ということで。。

まずは動かすソースコードから。

from selenium import webdriver
from webdriver_manager.microsoft import IEDriverManager

ieOptions = webdriver.IeOptions()
ieOptions.add_additional_option("ie.edgechromium", True)
ieOptions.add_additional_option("ie.edgepath",'C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe')
driver = webdriver.Ie(executable_path=IEDriverManager().install(), options=ieOptions)

driver.get('https://google.com')

EdgeのChroniumを利用してIEモードを開く方法。
とりあえずgoogleのページがIEモードで開ければOK。

まずは必要なライブラリのインストール
仮想環境別に作る場合はcondaインストールがおすすめ、というか今回は特に仮想環境を作ってやるのがおすすめです。
理由は後述します。

pipの場合
pip install selenium
pip install webdriver-manager

condaの場合
conda install -c conda-forge selenium
conda install -c conda-forge webdriver-manager

必要なライブラリインストールして、上記ソースコードを実行すると、多分こんなエラーでます。
「TypeError: Level not an integer or a valid string: None」

解決策はこちらを参考にしました。まさかのwebdriver_manager側の問題。。
stackoverflow.com

Answerにある「this pull request」をクリックして、microsoft.pyを修正します。
ここで先ほどの仮想環境をおすすめする理由になるのですが、ライブラリ側を手動でいじります。
変更内容もIE限定の対応になるので、他の動作時に悪影響を及ぼす可能性があります。
なので、できるだけ仮想環境で実行しましょう。

エンジニアの方は普段仮想環境やDocker等のコンテナ使ってるでしょうから問題ないかと思いますが、あまり使ったことがない人はこれを機に慣れておきましょう。

さてこれで実行すると以下の画面が立ち上がるかと思います。

InternetExplorer画面

一点気になるのは、以下のエラーメッセージが出るんですよね・・。
「Message: Unexpected error launching Internet Explorer. Browser zoom level was set to 125%. It should be set to 100%」

IEの表示サイズは100%設定になってます。

更に気になるのは、Windows10でやるとこのメッセージ出ないんですよね。

色々調べていると、Windows11からIEは基本開けない仕様のようなので、動かす時はWindows10の方がおすすめかもしれません。

もし令和の時代でIEを動かしたい需要のある方はご参考ください。