首页 > 解决方案 > 运行代码后有时宏无法设置 htmldiv

问题描述

我有这段代码可以从亚马逊抓取产品图片 URL。此代码最多可用于大约 500 个 URL 抓取,但在那之后,它会停止工作。原因是htmldiv由于某种原因未设置。我需要等待大约 1 小时才能再次开始工作,或者在重新启动 PC 后一段时间才能开始工作。

Rng 是我从中抓取产品图片 url 的 url 列表(亚马逊)

VBA代码:

Sub scrapeimgs2()
    'On Error Resume Next
    Dim XMLRequest As New MSXML2.XMLHTTP60
    Dim HTMLDoc As New MSHTML.HTMLDocument
    Dim HTMLDiv As MSHTML.IHTMLElement
    Dim cel, rng As Range
  
    Set rng = Sheets("sheet1").Range("i2:i1312")
    For Each cel In rng
        Application.StatusBar = cel.Row
        XMLRequest.Open "GET", cel, False
        XMLRequest.send
        
        If XMLRequest.Status <> 200 Then
            ThisWorkbook.Sheets("sheet1").Range("O" & cel.Row) = "Err"
        Else
            HTMLDoc.body.innerHTML = XMLRequest.responseText
            Set HTMLDiv = HTMLDoc.getElementById("landingImage") '<this line is set to nothing after scrapping approx 500urls>
            ThisWorkbook.Sheets("sheet1").Range("O" & cel.Row) = HTMLDiv.getAttribute("src", 0)
        End If

        If cel.Row Mod 50 = 0 Then
            ThisWorkbook.Save
        End If
        HTMLDoc.Close
        Set HTMLDiv = Nothing
    Next cel
    ThisWorkbook.Save
End Sub

标签: htmlexcelvbaweb-scraping

解决方案


推荐阅读