Windows Excel VBA + Selenium WEBスクレイピング chrome edge

Windows Excel VBA + Selenium WEBスクレイピング chrome edge

Selenium を導入し、VBA でchromeやedgeを自動操作するようなRPAのような物を作る事できる。まずは設定手順となります。下記サイト等を参考にSelenium+VBA試してみました。その他、pythonを使って同様な事ができます。

https://hineke.jp/archives/4876

Selenium Basic のインストール

http://florentbr.github.io/SeleniumBasic/

Download/Release page をクリック

https://github.com/florentbr/SeleniumBasic/releases/tag/v2.0.9.0

SeleniumBasic-xxx.exe をダウンロード、画面の指示に従いインストールします。

chrome 最新化

ChromeDriverを最新版のものに更新する。以下のサイトより入手

https://sites.google.com/chromium.org/driver/

ChromeDriverのバージョンは、現在使用しているchromeのバージョンと合わせます。バージョン確認方法は下記。上3桁までが一致していればOK

現在は115がダウンロード不可であるが、同一バージョンをダウンロードしてください。

ダウンロードした、chromedriver-win32.zip を解凍

Selenium Basic をインストールしたフォルダを開く

C:\Users\ユーザー名\AppData\Local\SeleniumBasic

配下に chromedriver.exe ファイルを貼り付け。edgeも同様

.NET Framework のインストール

インストールの方法は、

C:\Users\ユーザー名\AppData\Local\SeleniumBasic\Scripts

StartChrome.vbs をダブルクリック

ユーザープロファイルの設定

ユーザープロファイルの利用

VBEの参照設定を実施

次に、参照設定を実施します。VBE(VisualBasicEditor) を開いて、ツール > 参照設定を選択

Selenium Type Libraryにチェック

サンプルコードです。実行してみます。

実行結果。chromeが自動起動して、キーワード入力→検索→結果一覧と自動で実行できた。

まるでRPAソフトを使って自動操作しているようです。

下記がサンプルコードです。


Sub Sample()
Dim Driver As Selenium.ChromeDriver
Dim By As New Selenium.By
Dim element As Selenium.WebElement

Set Driver = New Selenium.ChromeDriver
With Driver
    '---Chromeを立ち上げる
    .Start
    '---Google検索へ移動
    .Get "https://www.google.com/"
    '---検索ウィンドに"ジャベ雄"を入力
    .FindElement(By.Css("textarea[type=search]")).SendKeys "アテモヤ"
    .Wait 1000
    '---Google 検索ボタンを押下
    .FindElement(By.Css("input[value=""Google 検索""]")).Click
    .Wait 1000
    '---検索結果の中からこのサイト("https://javeo.jp/"の前方一致だったらタイトルリンクをクリック
    For Each element In .FindElements(By.Css("#search > div > div"))
        If element.FindElement(By.Css("div > div > div > div > a")).IsDisplayed Then
            If element.FindElement(By.Css("div > div > div > div > a")).Attribute("href") Like "https://javeo.jp/*" Then
                Call element.FindElement(By.Css("div > div > div > div > a")).Click
                .Wait 1000
                Exit For
            End If
        End If
    Next
    '---Chromeを閉じる
    .Close
End With
Set Driver = Nothing
End Sub