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 115 or newer, please consult the Chrome for Testing availability dashbo...

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

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

実行結果

コメント

タイトルとURLをコピーしました