【EXCEL VBA】VBAでスクレイピングしたい – SeleniumBasic初期設定編

VBAでスクレイピングする方法は色々ありますが、情報収集のしやすさ、コード保守性などを考えると、SeleniumBasic一択だと思います(個人の感想)

今回はVBAでスクレイピングする準備として、初期設定の方法を紹介します。

動作確認用のサンプルプログラムも準備したので、初期設定後に正常動作するか確認してみてください。

SeleniumBasicのインストール

まずはSeleniumBasicをダウンロードします。2022年8月時点の最新版は2.0.9.0です。インストール時に選択肢がでますが全てデフォルトでインストールしましょう。

ChromeDriverのインストール

今回はVBA-Chromeでのスクレイピングを行いますので、ChomeDriverをインストールします。このページを見ているChromeのバージョンに合わせたものをダウンロードしてください。

アドレスバーに以下コマンドを入力するとChromeバージョンを確認することができます。

chrome://settings/help

赤枠のバージョンにあったChromeDriverをダウンロードしてください。

Windows用の「chromedriver_win32.zip」をダウンロード解凍し「chromedriver.exe」を取り出します。次に「chromedriver.exe」を「C:\Users\%USERNAME%\AppData\Local\SeleniumBasic」フォルダへコピーしてください。古いファイルは必ず上書きしてください。

.NET Framework のインストール

.NET Frameworkがインストールされていないとスクレイピング中にオートメーションエラーが発生します。.NET Frameworkをインストールするために、以下vbsをコマンドラインから実行してください。

C:\Users\%USERNAME%\AppData\Local\SeleniumBasic\Scripts\StartChrome.vbs

インストールが完了すると以下画面が表示されます。

VBE(Visual Basic Editor)で参照設定

参照設定をしておくと入力補完の恩恵を受けられます。「Selenium Type Library」を参照設定してください。

サンプルプログラム

“EXCEL VBA 研究所”でググるサンプルプログラムです。実行後Choromeが立ち上がり検索結果が表示されれば、動作確認は終了です。最後にStopとしているのは、プログラムが終了時にブラウザが閉じてしまうためです。

Option Explicit

Sub sample()
    Dim dr As New Selenium.WebDriver
    dr.Start "Chrome"
    
    dr.Get "https://www.google.co.jp/"
    dr.FindElementByName("q").SendKeys ("EXCEL VBA 研究所")
    dr.FindElementByName("btnK").Submit
    
    Stop
End Sub

追加設定

以上で初期設定完了となりますが、今後SeleniumBasicでスクレイピングを行う上で1つ課題がでてきます。それはChorme本体とChromeDriverのバージョン違いによる起動エラーです。Chorme本体は勝手にバージョンアップするので、知らないうちにバージョン違いが発生している状況。ChromeDriverを手動更新すればよいのですが、これがめんどくさい・・・。

この課題を解決するための記事を書きました。余裕のある方は以下を参考にしてください。