【Excel×VBA×Selenium】使い方備忘録+サンプルコード

リクエストは間隔を開ける

スクレイピングが利用規約で禁止されていないか確認

定数

Public Const STR_YAHOO_URL As String = "https://www.yahoo.co.jp/"
Public Const STR_YAHOO_TITLE As String = "Yahoo! JAPAN"
Public Const STR_GOOGLE_URL As String = "https://www.google.com/"
Public Const STR_GOOGLE_TITLE As String = "Google"

Edge雛形

Sub SeleniumWithEdge()
Dim eDriver As New Selenium.EdgeDriver

With eDriver
    .Get "https://google.com/"
    Call AddNewTab(eDriver, STR_YAHOO_URL)
    Call DisplayWindowsTitle(eDriver)
End With
Call AllTabClose(eDriver)
Debug.Print "All Done"
End Sub

Chrome雛形

Sub SeleniumWithChrome()
Dim cDriver As New Selenium.ChromeDriver

With cDriver
    .Get "https://google.com/"
    Call AddNewTab(cDriver, STR_YAHOO_URL)
    Call DisplayWindowsTitle(cDriver)
End With
Call AllTabClose(cDriver)
Debug.Print "All Done"
End Sub

タブの追加

Sub AddNewTab(pDriver As Object, pURL As String)
If pURL = "" Then
    pDriver.ExecuteScript ("window.open()")
    pDriver.SwitchToNextWindow
Else
    strCommand = "window.open('" & pURL & "')"
    pDriver.ExecuteScript (strCommand)
    pDriver.SwitchToNextWindow
End If
End Sub

タブの削除

Sub AllTabClose(pDriver As Object)
    For Each objTabPage In pDriver.Windows
        objTabPage.Close
    Next objTabPage
End Sub

Chrome限定ブラウザ非表示処理設定

Sub HeaderLessSettingForChrome(pDriver As Object)
    pDriver.AddArgument "--headless"
    pDriver.AddArgument "--disable-gpu"
End Sub

ページタイトル表示

Sub DisplayWindowsTitle(pDriver As Object)
Dim pageholder() As String
Dim i As Long
Dim objPage As Object

ReDim pageholder(pDriver.Windows.Count)
i = 0
    For Each objPage In pDriver.Windows
        pageholder(i) = objPage.Title
        i = i + 1
    Next objPage
    
    Debug.Print Join(pageholder, vbCrLf)
End Sub

コメント

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