【发布时间】:2021-01-07 02:41:26
【问题描述】:
我希望从订阅网站中提取图像。图片的html代码如下:
<img chart-id="2669" alt="Chart ID 2669" class="chart-img"
src="https://website.com/img_2054_569134694870.jpg"
diagnostic-id="chart-img-1" style="max-height: 150px;">
查看我认为引用 alt id 的代码是我最好的选择。所以我的代码看起来像这样。
Sub ImportImage()
Dim Cell As Integer
Dim ItemNbr As String
Dim AElement As Object
Dim AElements As IHTMLElementCollection
Dim IE As MSXML2.XMLHTTP60
Set IE = New MSXML2.XMLHTTP60
Dim HTMLDoc As MSHTML.HTMLDocument
Dim HTMLBody As MSHTML.HTMLBody
Set HTMLDoc = New MSHTML.HTMLDocument
Set HTMLBody = HTMLDoc.body
IE.Open "GET", "https://app.website.com/22920", False
IE.send
While IE.readyState <> 4
DoEvents
Wend
HTMLBody.innerHTML = IE.responseText
Set pImg = HTMLDoc.getElementById("Chart ID 2669")
ThisWorkbook.Worksheets("Sheet1").Range("B7") = pImg.getAttribute("alt")
Application.Wait (Now + TimeValue("0:00:2"))
End Sub
这段代码很弱,但我正在尝试构建它,以便将网站图像导入我的工作簿。有什么建议吗?谢谢!
Sub NEWUPDATEDImportImage()
Set IE = CreateObject("InternetExplorer.Application")
strURL = "https://website.com/chartbooks/22920"
IE.navigate strURL
IE.Visible = True
Dim HTMLDoc As MSHTML.HTMLDocument
Dim HTMLBody As MSHTML.HTMLBody
Set HTMLDoc = New MSHTML.HTMLDocument
Set HTMLBody = HTMLDoc.body
HTMLBody.innerHTML = IE.responseText
Worksheets("Sheet1").Range("A1") = HTMLDoc.querySelector("img[alt='Chart ID 2669']").getAttribute("src")
End Sub
【问题讨论】:
-
我去掉了PHP标签,都是vba代码
-
alt 属性不是
alt ID。所以你不能通过属性'alt id'使用getElementById -
循环文档中的所有元素并检查
if tempElement.getAttribute("alt") = "Chart ID 2669" -
谢谢@Sacru2red,你能多解释一下你最后的评论吗?如果我包含这一行而不是
Set pImg = HTMLDoc.getElementById("Chart ID 2669")我应该如何将该图像放入单元格中? -
@Sacru2red 我有这样的东西,但它不起作用。
For Each Elem In IE.document.getElementsByTagName("img") If IE.tempElement.getAttribute("alt") = "Chart ID 2669" Then Worksheets("Sheet1").Range("A1") = IE.document.getElementsByTagName("img").getAttribute("src")