BraveブラウザをSeleniumBasic+Excel(VBA)で自動化してスクレイピングする方法

Braveとはプライバシーを重視した高速かつ安全な次世代ブラウザです。(公式の受け売り)
SeleniumBasicとExcel(VBA)を使って自動化しスクレイピングを行います。

事前準備

インストールがまだの方はこちらの記事を参考にSeleniumBasicをインストールしておいてください。

超簡単!vb.net+SeleniumBasicを使ってchromeにてスクレイピング(自動化)させる

バージョンの確認

BraveのベースはChromeの元となっているChromiumです。
Chromeを制御するchromedriver.exeがそのまま使えるため、Braveのバージョンを確認します。

上記の例では 94.0.4606.61でした。
対応するChromeDriverをインストールします

ChromeDriver - WebDriver for Chrome - Downloads
Current Releases If you are using Chrome version 95, please download ChromeDriver 95.0.4638.17 If you are using Chrome version 94, please download ChromeDriver...

きっちり末尾の数値まで一致させないと駄目みたいですね。

ZIPファイルを展開し、 chromedriver.exe を以下の場所にコピーします。

SeleniumBasicがインストールされた場所(フォルダ)

参照設定

ここからはExcel上での作業になります。

Excelを立ち上げたらALT+F11を押下しVBAのIDEを起動してSheet1を選択。
ツール - 参照設定をクリックします。

参照設定でSelenium Type Libraryにチェックを付けて「OK」

SeleniumBasicからBraveを立ち上げてスクレイピングするサンプル

SeleniumBasicにはchromeのパスを指定する SetBinaryメゾッドがあります。

SetBinary "パス名\brave.exe"

Braveを立ち上げるVBAコード

以下のコードをVBのコードエディタに張り付けます。
F5押下で実行

Sub TestBrave()
    Dim driver As New ChromeDriver
    With driver
        .SetBinary Environ$("ProgramW6432") & "\BraveSoftware\Brave-Browser\Application\brave.exe"
        .Get "https://www.yahoo.co.jp/"
    End With
End Sub

実行結果

SeleniumBasicでChromeを制御した時と同じように、
「Brave は自動テストソフトウェアによって制御されています。」
と表示されました。

BraveでスクレイピングをするVBA

Yahoo!の検索窓に「Brave」と入力し検索結果を取得するマクロサンプルです。

Sub TestBrave()
    Dim driver As New ChromeDriver
    Dim elmLoop As WebElement
    Dim sURL As String
    
    With driver
        .SetBinary Environ$("ProgramW6432") & "\BraveSoftware\Brave-Browser\Application\brave.exe"
        .Get "https://www.yahoo.co.jp/"
        .FindElementByName("p").SendKeys "Brave" & vbLf
        .Wait 5000
        
        For Each elmLoop In .FindElementByCss("div.Contents__inner.Contents__inner--main > div.Contents__innerGroupBody").FindElementsByClass("sw-CardBase")
            If Split(elmLoop.Text & vbLf, vbLf)(0) <> "広告" Then
                sURL = elmLoop.FindElementByTag("A").Attribute("HREF")
                If InStr(sURL, "http") Then
                    Debug.Print Split(elmLoop.FindElementByTag("A").Text & vbLf, vbLf)(1)
                    Debug.Print vbTab & sURL & vbCrLf
                End If
            End If
        
        Next
    End With
End Sub

実行結果