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を手動更新すればよいのですが、これがめんどくさい・・・。
この課題を解決するための記事を書きました。余裕のある方は以下を参考にしてください。