IEサポート終了に伴うウェブスクレイピングの代替手段

さて、IEサポート終了まで1ヶ月をきりました。
業務上使用しているIE制御関連のツールをどう代替するか…なんてことを考えています。

どうやらCOMシナリオ(VBAによるIE呼び出しての制御)は引き続き動くらしいです。
まあだからといってそのままCOMシナリオを使っていていつ使えるなくなるかも分かりませんので、代替手段を用意して恒久的な対応をしておいた方が良いのは明白ですが。
blogs.windows.com

COM シナリオは、2022 年 6 月 15 日以降に IE11 デスクトップ アプリケーションが無効化された後も引き続き機能します。上記の更新プログラムのインストール後も問題が発生する場合は、App Assure に連絡して修復サポートを受けてください。

IEサポート終了に伴う代替手段

個人的には下記が候補かなと考えています。

  • TinySelenium
  • SeleniumBasic
  • WebDriver直操作
  • PowerAutomateDesktop

TinySelenium

Excel VBAでIEを思いのままに操作できるプログラミング術 Excel 2013/2010/2007/2003対応
有名な(?)こちらの本の作者様が作ってくれたツールです。
こちらを活用する事で、新たにインストール等をせずとも素のVBAと対応するWebDriverでブラウザの制御ができるという素晴らしいツールです。

エクセルが入っている環境があれば使用できるという何者にも代えがたい素晴らしいメリットがあるので、
配布する場合などはこちらが良いのかなと思います。
github.com
qiita.com

SeleniumBasic

2016年3月を最後に更新されていません。
ただ、こちらをインストールして適切な設定を行うとVBAでの開発が容易に行えるようです。

いろんな制御ができるようなので、環境依存にはなってしまいますが開発速度考えた場合これなのかなと。
環境依存と言っても、SeleniumBasic入れれば良いだけなので。
github.com

WebDriver直操作

自分は日曜プログラマーなので、学習コストがかなりかかる…\(^o^)/
ただ、この方法での実装が容易にできるようになれば活用の幅は広がるのだろうな…。
zenn.dev

PowerAutomateDesktop

Microsoft謹製のRPAツールです。
有象無象にある鬼のように高いライセンス料金が必要なものもある世に出ているRPAツールと同等でなおかつ無償使用できるのでRPAツールを使うのならこれかなと。
ただ、ちょっと使ってみた感じ動作速度が遅かったりライセンス契約しないとスケジュール実行ができない(?)ようなので、そこがデメリットなのかなと。
サードのRPAツール使うくらいならこちらのほうが良いんじゃなかろうか…なんて素人ながらに思いました。

とりあえずVBAをヘビーユースしている人間なのでSeleniumBasicをインストールする

SeleniumBasicにします!!
TinySeleniumと悩みましたがTinySeleniumは必要最低限の処理…との事なので、組んでいく中でやりたい事ができなくなる可能性が高い。
安牌を取りました。

SeleniumBasicのセットアップ

Release SeleniumBasic v2.0.9.0 · florentbr/SeleniumBasic · GitHub

こちらからエグゼファイルをダウンロード。


ダウンロードが終わったらエグゼファイルをダブルクリックしてインストール。
とりあえず次へで進めていけばOK。


GoogleChromeを立ち上げてバージョンを確認。
ヘルプ -> バージョンを確認より。



ChromeDriver - WebDriver for Chrome - Downloads
対応するWebDriverのWinのものをダウンロード。
GoogleChromeがVer『101』なので同じものを。


ダウンロードしたZipを解凍して
『chromedriver.exe』を切り取る。


たぶんデフォルトだとこのフォルダにあると思うので探す。
で、このフォルダに先程切り取ったファイルを貼り付けて『chromedriver.exe』を上書き。


このフォルダにある、『StartChrome.vbs』というファイルをダブルクリックする。
「Click OK to quit」と表示されれば問題ないが、「.NetFrameworkインストールウィザード」が表示される環境もあるのでその場合はインストール。
※.NetFrameworkをインストールしないと、実際にコーディングして実行した時に「オートメーションエラーです。」と表示され動かないので必ず。

これで環境は準備は整ったで、次はChromeを自動操作するためのエクセルファイルの設定します。

エクセルファイルの設定


エクセルを立ち上げてAlt+F11等でVBEを立ち上げ ツール->参照設定。


Selenium Type libraryが追加されているはずなのでこのチェックをつけてOK。

テストコード

Option Explicit
'メモ参照設定『Microsoft Scripting Runtime』『Selenium Type Library』

Sub hogehoge()
    
    Dim i As Long
    
    Dim driChrome As New ChromeDriver
    
    driChrome.Start
    
    'はてなを開く
    driChrome.Get "https://www.hatena.ne.jp/"
    
    'はてなで話題のエントリー 上から1,2,3を開く
    driChrome.FindElementByXPath("//*[@id=""react-tabs-1""]/ul/li[1]/article/div[1]/h3").Click
    driChrome.FindElementByXPath("//*[@id=""react-tabs-1""]/ul/li[2]/article/div[1]/h3").Click
    driChrome.FindElementByXPath("//*[@id=""react-tabs-1""]/ul/li[3]/article/div[1]/h3").Click
    
    'Yahooを開く
    driChrome.Get "https://www.yahoo.co.jp/"
    
    '検索フィールドにテキスト入力
    driChrome.FindElementByXPath("//*[@id=""ContentWrapper""]/header/section[1]/div/form/fieldset/span/input").SendKeys ("test")
    
    '検索をクリック
    driChrome.FindElementByXPath("//*[@id=""ContentWrapper""]/header/section[1]/div/form/fieldset/span/button").Click
    
    '処理ストップ
    Stop
    
End Sub


実行するとこんな画面になったんじゃないかなと思います。
Chrome は自動テスト ソフトウェアによって制御されています。」と表示されて、Yahooは[test]を検索し、はてなの話題エントリが3つ開いている状態。

ちょっと触っただけでこれだけできるのでもう本当に素晴らしい…。
ブラウザの読み込み待ちもデフォルトでしてくれるようになっているようで、かなり使いやすいです。

COMでやっているIEの処理を順次入替えていきたいと思います!!(`・ω・´)