无法从网页中抓取页面源中可用的图像链接

时间:2021-02-08 11:13:25

标签: excel vba web-scraping xmlhttprequest

我正在尝试使用 xmlhttp 请求从 webpage 获取食谱图像链接。图像链接在某些样式属性中的页面源中可用。 但是,当我像下面这样尝试时,我得到 background-image 作为输出,而 style 的值包含图像链接。

到目前为止我已经尝试过:

Sub GrabImageLink()
    Const Url$ = "https://www.yumm.ca/en/recipe/salmon-green-curry-1"
    Dim HTML As HTMLDocument, Http As Object
    
    Set HTML = New HTMLDocument
    Set Http = CreateObject("MSXML2.XMLHTTP")

    With Http
        .Open "Get", Url, False
        .setRequestHeader "User-Agent", "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.135 Safari/537.36"
        .send
        HTML.body.innerHTML = .responseText
    End With
    
    Debug.Print HTML.querySelector(".recipe-visual").getAttribute("style")
End Sub

当前输出:

background-image

预期输出:

https://cdn.yumm.ca/uploads/images/572b58ad0ed35a3d0294484ec535a131/salmon-green-curry@2x_s.jpg

1 个答案:

答案 0 :(得分:1)

这在 JS 中同样令人讨厌。要获取属性值,您必须直接引用样式属性,因此请使用以下方法:

HTML.querySelector(".recipe-visual").Style.backgroundImage

一旦您输入 HTML.querySelector(".recipe-visual").Style,代码编辑器实际上会为您提供所有可用属性的弹出窗口,这很方便