自動で大量のWebページのスクリーンショットをとる方法

自動で大量のWebページのスクリーンショットをとる方法

Excel VBAを使って、大量のWebページのスクリーンショットをとる方法です。5分でできますよ!

ウェブブラウザをコントロールできるSeleniumを使います。VBAで使えるSeleniumBasicというのがあるので下記ページからダウンロードしてインストールします。
Seleniumbasic

コードは以下になります。ExcelのVBAで参照設定から”Selenium Type Library”にチェックを付けておきます。実行するとSheet1のシート上の、セルのA列にURLが順に記入されている状態で、すべてのURLのスクリーンショットを任意のフォルダに保存します。

Sub takeScreenShot()
    Dim driver As FirefoxDriver
    Dim i As Long
    Dim destURL As String
    Dim flag As Boolean
    Dim imageFileName As String
    
    Set driver = New FirefoxDriver
    Call driver.Start
    driver.Timeouts.ImplicitWait = 10000           'Seleniumの読み込み待機時間
    'driver.Window.Maximize
    driver.baseUrl = "www.google.co.jp"
        
    With ThisWorkbook.Worksheets("Sheet1")
        For i = 1 To .Cells(1, 1).End(xlDown).Row
            If .Cells(i, 1) = "" Then 
            Else
                If InStr(.Cells(i, 1), "http://") = 0 Then
                    destURL = "http://" & .Cells(i, 1)
                Else
                    destURL = .Cells(i, 1)   
                End If
             
                flag = driver.Get(destURL)

                If Not flag Then
                    MsgBox (.Cells(i, 1).Value & "のページの読み込みに失敗しました。")   
                End If
                
                imageFileName = Replace(.Cells(i, 1).Value, "/", "_")        'URLにスラッシュが入るとフォルダごとに分けられるので、アンダーバーに置換
                                                                             'スラッシュごとにフォルダに分けたい場合は、次行のimageFileName を.cells(i, 1).Valueに置き換え
                driver.TakeScreenshot.SaveAs "C:\Users\user\Documents\pages" & imageFileName & ".jpg"
            End If
        Next
    End With
    driver.Close
End Sub
いいねとおもったらシェア!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です