【VBA】スクレイピングをしてみよう

最近IEのサポートが終了しました。
業務でいくつかの自動プログラムを組んでいたので代替手段を用意しました。

準備

参照設定

Selenium Type Libraryを設定します。
標準では用意がないため、必要に応じてインストールします。
https://github.com/florentbr/SeleniumBasic/releases/tag/v2.0.9.0
※インストール場所は後ほど使用します。
私の場合は下記にフォルダが作成されました。
C:\Users\[ユーザー名]\AppData\Local\SeleniumBasic

WebDriverのインストール

ChromeのVerに合わせたWebDriverをダウンロードします。
ウェブを操作してくれるものです。

VerはChromeのヘルプ⇒Google Chromeについてを参照

SeleniumBasicフォルダにWebDriverを配置

最新のWebDriverをVBAで使用するためにVBEで参照設定をしているフォルダにWebDriverを配置する必要があります。
※私の場合こちら⇩
C:\Users\[ユーザー名]\AppData\Local\SeleniumBasic

これで準備は完了です。
簡単な操作プログラムをメモしておきます。

プログラムサンプル

Sub sample()
    Dim Driver As New Selenium.WebDriver
    
    Driver.Start "chrome"
    Driver.Get "https://www.yahoo.co.jp/"
    
    Set elm = Driver.FindElementByXPath("/html/body/div/div/header/section[1]/div/form/fieldset/span/input")
    elm.SendKeys "keyword"
    
    Stop
End Sub

こちらはYahooにて検索ボックスへ”keyword”と入力する単純なプログラムです。
ポイントはFindElementByXPathを使っているところですが、場合によってはFindElementByIdなどを使うこともあります。
エレメント(ホームページの項目)をどういった形式で参照するかです。

スクレイピングした画面がすぐ閉じてしまうことに問題がある場合は、
Dim Driver As New Selenium.WebDriver
この一文をプロシージャ外で定義することで画面が閉じなくなります。

画面表示、入力、クリック、きっちり関数に分けてあげれば作成も管理も簡単そうですね。


この記事が気に入ったらサポートをしてみませんか?