スクレイピング・・・WEBサイトから情報抽出する技術のこと。
今はPythonなどでよく使われている。
そしてVBAでのスクレイピングは従来はIEでやるのが一般的だったが、IEの廃止によりChromeでやってみた。
VBAでもスクレイピングが可能!
ではどうやってVBAでスクレイピングをするのか?
まず必要なことは、
- SeleniumBasicのインストール(PCで)
- ChromeDriverのインストール(PCで)
- VBAの参照設定(VBE内で)
である。
その他、もしエラーが出た場合は以下の設定も必要になることがある。
- .NET Frameworkのインストール(PCで)
SeleniumBasicのインストール
SeleniumBasicは、VBAでSeleniumを利用するために必要なものである。
これをまずインストールする。
インストール先はこちら→https://github.com/florentbr/SeleniumBasic
ここから最新のSeleniumをインストールしていく。
インストール終了後はChromeDriverのインストールも引き続きしていく。
[注意]
ここで、SeleniumBasicをインストールしたフォルダの場所をメモしておくと良い。
理由として、後続の処理でChromeDriver.exeをインストールするときに役立つからである。
ChromeDriverのインストール
1. ブラウザのバージョン確認
まず、インストールする前に自分のPC内のChromeブラウザのバージョンを確認する必要がある。
確認のやり方は
1. ブラウザの右上の3点バーをクリック
1. 「ヘルプ」をクリック
1. 「GoogleChromeについて」をクリック
これでバージョンが分かる。
2. ChromeDriverダウンロード
この時に、Chromeブラウザのバージョンに合ったChromeDriverをダウンロードする必要がある。
ChromeDriverダウンロード先⇒https://chromedriver.chromium.org/downloads
そして、今回、ブラウザのバージョンは「108」が頭にきているのでそれに合わせる。
つまりこの場合、上から2番目のバージョンをインストールすればいいと分かる。
3. ChromeDriver.exeの移行
ダウンロードしたZipファイルをダブルクリックし、中身を開く。
すると「ChromeDriver.exe」が出てくるのでそれをコピーし、SeleniumBasicフォルダ内に貼り付ける。
するとSeleniumBasic内にあるChromeDriver.exeが最新になる。
VBE側での参照設定
最後に、VBE側での参照設定を行う。
VBE側で「Selenium Type Library」の参照設定にチェックを入れて保存するだけで良い。
動作検証
ここまで来たらもうSeleniumでのスクレイピングは可能なはずだが、念のため動作検証をする。
動作検証は一般的に使われることが多い「Yahooを開く」ことでの確認方法を採用する。
やり方としては、以下のコードをVBEに貼り付け動かすだけでOK。
その際正しくYahooが開いたら動作検証はOKである。
Sub test()
'Selenium制御
Dim driver As New Selenium.ChromeDriver
'ウィンドウサイズ最大化
driver.AddArgument "disable-gpu"
driver.AddArgument "start-maximized"
Call driver.Start("chrome")
'YahooのURLを開く
driver.Get ("https://yahoo.co.jp")
Stop
End Sub
エラーが出た時の対処方法
もし上の動作検証でエラーが出た場合(特に多いのは「オートメーションエラー」)
以下の設定が足りていないことが考えられる。
- ChromeDriverのバージョンがChromeブラウザのバージョンと一致していない
- Net FrameworkがPCに入っていない
このうち、1に関しては先ほどの「Chromeドライバのインストール」でブラウザのバージョンをもう一度確認し、それに合ったChromeDriverをダウンロードすると良い。
2に関しては、Net Frameworkを以下のサイトを参考にしてインストールすれば解決できるかもしれない。
https://atmarkit.itmedia.co.jp/ait/articles/1605/09/news018_2.html
その後、もう一度上記テストを行って成功すればめでたしめでたしである。
では次に、実際にVBAでスクレイピングをしてみる。⇒続き実践編へ