みなさんこんにちは。
イプシロンです。
ECサイトなど商品の在庫状況によって、
サイト内の指定要素が変更される場合があります。
そのようなサイトに遭遇した際、
スクレイピングする際に、webページに指定要素が存在するかをチェックすなければエラーになりますので、
本日はその対処法について書いていきます。
結論
指定要素が存在するかどうかを判断して、分岐処理をすれば問題ありません
Webページに指定要素が存在するかチェックするサンプルコード
=================================
Public Sub 指定要素の存在チェック()
Dim driver As New Selenium.WebDriver
Dim myBy As New By
Dim sURL As String
sURL = "スクレイピングしたいサイトのURLを入力"
driver.Start "chrome"
driver.Get sURL
'■要素が存在していればTrue/存在しなければFalse
Debug.Print driver.IsElementPresent(myBy.ID("対象要素のIDを入力"))
'■要素が存在してれば処理を行う
If driver.IsElementPresent(myBy.ID("対象要素のIDを入力")) Then
'存在していた場合の処理
Else
'存在していない場合の処理
End If
'■上記はidの場合です。id要素以外は以下参照。
Debug.Print driver.IsElementPresent(myBy.Class("xxxxx")) 'Class
Debug.Print driver.IsElementPresent(myBy.Name("xxxxx")) 'Name
Debug.Print driver.IsElementPresent(myBy.Tag("xxxxx")) 'Tag
Debug.Print driver.IsElementPresent(myBy.xpath("xxxxx")) 'xPath
End Sub
=================================
VBA のスクレイピングの情報は結構少ないんですよね。
自身で実装するときに、調べものでドハマりすることが多いです。