excel 如何从亚马逊英国拉图像

xytpbqjk  于 2023-03-20  发布在  其他
关注(0)|答案(1)|浏览(95)

我尝试从Amazon.co.uk下载高分辨率图片。我尝试了[thread][1]中给出的代码,但遇到了一些问题。
由@QHarr编写的代码对于给定的www.example.com网站运行良好Amazon.in,但当我尝试访问Amazon.co.uk,
.querySelector(“#landingImage”).getAttribute(“data-old-hires”)没有返回任何结果。下面是我正在测试的代码。

Public Sub GetInfo()
    Dim Html As HTMLDocument, results()
    Set Html = New HTMLDocument
    
    With CreateObject("MSXML2.XMLHTTP")
        .Open "GET", "https://www.amazon.co.uk/dp/product/B01GFJWHZ0", True
        .send
        Html.body.innerHTML = .responseText
        
        With ThisWorkbook.Worksheets("Sheet1")
            .Cells(1, 2) = Html.querySelector("#productTitle").innerText
            .Cells(1, 2).Offset(0, 1) = Html.querySelector("#landingImage").getAttribute("data-old-hires")
        End With
    End With

End Sub

知道我到底做错了什么吗

mv1qrgav

mv1qrgav1#

我猜响应的html被破坏了,但是你可以很容易地用正则表达式从响应字符串中去掉这一部分。
注意,async参数也设置为False,以便有时间加载数据。我有点惊讶您的代码达到了您所说的程度。它还应该在HTMLDocument中没有与该选择器匹配的事实上出错。

Public Sub GetInfo()
    'tools > references > Microsoft HTML Object Library
    Dim re As Object, html As MSHTML.HTMLDocument, xhr As Object, s As String

    Set re = CreateObject("VBScript.RegExp")
    Set xhr = CreateObject("MSXML2.XMLHTTP")
    Set html = New MSHTML.HTMLDocument
    re.Pattern = """hiRes"":""(.*?)"""
    
    With xhr
        .Open "GET", "https://www.amazon.co.uk/dp/product/B01GFJWHZ0", False
        .setRequestHeader "User-Agent", "Mozilla/5.0"
        .send
        s = .responseText
        html.body.innerHTML = s
    End With
    With ThisWorkbook.Worksheets("Sheet1")
        .Cells(1, 2) = html.querySelector("#productTitle").innerText
        .Cells(1, 3) = re.Execute(s)(0).SubMatches(0)
    End With
End Sub

正则表达式:

相关问题