Amazon Sales Data (with Excel VBA)

前端 未结 2 1478
礼貌的吻别
礼貌的吻别 2020-12-20 05:08

I\'m trying to obtain the result number (in the HTML code) of each keyword I search by means of Excel VBA. Narrowing down the criteria by className, id, and data-asin, but t

2条回答
  •  旧时难觅i
    2020-12-20 05:26

    Here is the example which downloads products from Amazon for each search query presented on the sheet Terms, and populates the sheet Products with ASINs and descriptions. It uses XHR, so IE isn't needed. The code is as follows:

    Sub Test()
        lngRow = 1
        ' search each term
        For Each strTerm In Sheets("Terms").UsedRange
            lngPage = 1
            Do
                ' HTTP GET request of the search result page
                strUrl = "https://www.amazon.com/s/ref=nb_sb_noss_2?page=" & lngPage & "&keywords=" & EncodeUriComponent(strTerm)
                Set objXHR = CreateObject("MSXML2.XMLHttp")
                objXHR.Open "GET", strUrl, False
                objXHR.Send
                strResp = objXHR.ResponseText
                ' split response to array by items
                arrResp = Split(strResp, "
  • ")(0) & "
  • " Sheets("Products").Cells(lngRow, 2).Value = GetInnerText(strTmp) ' show current item Sheets("Products").Cells(lngRow, 1).Select ' next row lngRow = lngRow + 1 Next ' adjust sheet Sheets("Products").Columns.AutoFit Sheets("Products").Rows.AutoFit ' next page lngPage = lngPage + 1 Loop Until UBound(arrResp) = 0 ' empty search result Next End Sub Function EncodeUriComponent(strText) Static objHtmlfile As Object If objHtmlfile Is Nothing Then Set objHtmlfile = CreateObject("htmlfile") objHtmlfile.parentWindow.execScript "function encode(s) {return encodeURIComponent(s)}", "jscript" End If EncodeUriComponent = objHtmlfile.parentWindow.encode(strText) End Function Function GetInnerText(strHtmlContent) Dim objHtmlFile, objBody Set objHtmlFile = CreateObject("htmlfile") objHtmlFile.write strHtmlContent Set objBody = objHtmlFile.getElementsByTagName("body")(0) GetInnerText = Trim(objBody.innerText) End Function

    I placed on the Terms sheet:

    Results on the Product sheet contain 571 items:

    It's not a complete answer, but I hope it helps you.

提交回复
热议问题