🌊

ChatGPTを使ってスクレイピングのコードを書くことができました

2023/04/30に公開

お店の商品名の一覧が必要で、スクレイピングの作業が必要になりました。
VBAでスクレイピングできることが分かりましたので、ChatGPTを使いVBAのコードを書くことができました。
抽出したい商品名とURLがあるHTMLのクラス名の指定を私が間違えたので、はじめは上手く行かなったですが、クラス名を修正することで抽出できました。

ExcelでVBAを使ってスクレイピングを行うときは、 ツール→参照設定で、Microsoft HTML Object Libraryを選択してください。

スクレイピングするときは、商品名とURLがあるタグのクラス名を指定すると良いです。

<h3 class="class_name">
            <a href="hoge" class="class_name2">
             商品名
            </a>
          </h3>

上記のコードの場合は、class_name2でなく、その上のclass_nameを指定すると良いです。

実際に使うときは、class_nameを目的のクラス名に書き換えてください。
URLも、hogeの部分を抽出したいURLに変えてください。
このコードは、4ページの読み込みを行います。

Sub ScrapeOnigiriLinks()
    
    Dim ie As Object
    Dim Html As Object
    Dim i As Integer
    Dim j As Integer
    Dim link As String
    Dim itemName As String
    
    Set ie = CreateObject("InternetExplorer.Application")
    ie.Visible = True
    
    Set Html = CreateObject("HTMLFile")
    
    j = 1
    
    For i = 1 To 4
        link = "https://hoge?page=" & i
        
        ie.navigate link
        
        Do While ie.Busy Or ie.readyState <> 4
            DoEvents
        Loop
        
        Set Html = ie.document
        
        Dim products As Object
        Set products = Html.getElementsByClassName("class_name")
        
        Dim product As Object
        
        For Each product In products
            If Not product.getElementsByTagName("a")(0) Is Nothing Then
                itemName = product.getElementsByTagName("a")(0).innerText
                Worksheets("Sheet1").Cells(j, 1).Value = itemName
                Worksheets("Sheet1").Cells(j, 2).Value = product.getElementsByTagName("a")(0).href
                j = j + 1
            End If
        Next product
        
        Debug.Print "Page " & i & " done"
        
    Next i
    
    ie.Quit
    Set ie = Nothing
    
    MsgBox "スクレイピングが完了しました。"
    
End Sub

Excelのワークシートには、商品名、URLの順でリストが出力されます。

Discussion