我正在尝试使用VBA从此HTML片段中抓取到.gif文件的链接:
<div class="row">
<div class="col-md-12">
<div id='imageDiv' style='width:99%'>
<img style='width:99% !important; border:5px solid silver;' src="http://www.[rest of link].gif" alt="" />
</div>
我的下面的代码:
parent_url = "http://www.[webpage url]"
objIE.navigate parent_url
While objIE.Busy Or objIE.readyState <> 4
DoEvents
Wend
For Each ele In objIE.document.getElementsByTagName("imageDiv")
If InStr(ele.Style, "width") > 0 Then
ws1.Cells(2, 2) = ele.innerText: Exit For
End If
Next
objIE.Quit
即使我尝试许多不同的元素类型,也不会向电子表格写入任何内容。 关于我在做什么错的任何指示? TIA
答案 0 :(得分:0)
尝试:
For Each ele In objIE.document.getElementById("imageDiv").getElementsByTagName("img")
答案 1 :(得分:0)
首先,正如蒂姆·威廉姆斯(Tim Williams)指出的,imageDiv
是id
而不是标签,因此可以通过.getElementById()
方法来访问它,该方法返回一个唯一的HTML元素。与.getElementsByTagName()
相反,后者返回HTML元素的集合。
最简单的HTML标记形式类似于<TagName>Inner Text</>
。
因此,在您的情况下,您要查找的标签名称是img
,而您要查找的id
是imageDiv
。
因此,如果要获取id
为imageDiv
的元素,然后获取其img
元素,更具体地说,为其 first {{1 }}元素,您必须这样做:
img
第二,Dim img As HTMLImg
Set img = objIE.document.getElementById("imageDiv").getElementsByTagName("img")(0)
不是您想要的。您需要的是innerText
。
可以这样实现:
src
要利用Debug.Print img.src
属性,我们将元素存储在.src
变量中。
上面的代码会将以下内容打印到您的直接窗口中:
使用的参考:HTMLImg
答案 2 :(得分:0)
除了给出的答案外,使用返回单个节点的css选择器更有效,更快捷
Debug.Print objIE.document.querySelector("#imageDiv img").src