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等のコンテナ使ってるでしょうから問題ないかと思いますが、あまり使ったことがない人はこれを機に慣れておきましょう。
さてこれで実行すると以下の画面が立ち上がるかと思います。
一点気になるのは、以下のエラーメッセージが出るんですよね・・。
「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を動かしたい需要のある方はご参考ください。