Dim xhr
Dim document
Dim stream
set document = WScript.GetObject("TARGET URL")
While document.readyState <> "complete"
WScript.Sleep 200
Wend
set xhr = CreateObject("MSXML2.XMLHTTP.3.0")
xhr.open "GET", document.getElementsByTagName("img")(0).src, False xhr.send
set stream = CreateObject("Adodb.Stream")
with stream
.type = 1
.Open
.Write xhr.responsebody
.SaveToFile "C:\Users\bebebe\Desktop\a.jpg", 2
end with
set stream = nothing
set xhr = nothing
stream.Close
以上是我的代码,我正在尝试从“目标URL”下载多张图片。
我目前正在寻找的最佳解决方案是通过VBS下载多个图像,但也可以选择使用VBA。
从上面的VBScript中,我不确定如何在Stream上循环以从指定的URL下载多个图像。
答案 0 :(得分:1)
您知道如何编写循环(您已经在使用一个循环)。只需将getElementsByTagName("img")(0)
替换为getElementsByTagName("img")(index)
,其中index
是循环递增的变量。 getElementsByTagName("img")
返回一个集合,您可以查询其集合count
来知道要循环多少次。
Dim document
Dim xhr
Dim images
Dim index
Dim stream
set document = WScript.GetObject("TARGET URL")
While document.readyState <> "complete"
WScript.Sleep 200
Wend
set xhr = CreateObject("MSXML2.XMLHTTP.3.0")
set images = document.getElementsByTagName("img")
For index = 0 To images.count-1
xhr.open "GET", images(index).src, False
xhr.send
set stream = CreateObject("Adodb.Stream")
with stream
.type = 1
.Open
.Write xhr.responsebody
.SaveToFile "C:\Users\bebebe\Desktop\" + CStr(index) + ".jpg", 2
end with
stream.Close
set stream = nothing
Next
set images = nothing
set xhr = nothing
set document = nothing
或者,您可以使用for each
循环枚举集合:
Dim document
Dim xhr
Dim images
Dim image
Dim index
Dim stream
set document = WScript.GetObject("TARGET URL")
While document.readyState <> "complete"
WScript.Sleep 200
Wend
set xhr = CreateObject("MSXML2.XMLHTTP.3.0")
set images = document.getElementsByTagName("img")
set index = 0
For each image in images
xhr.open "GET", image.src, False
xhr.send
set stream = CreateObject("Adodb.Stream")
with stream
.type = 1
.Open
.Write xhr.responsebody
.SaveToFile "C:\Users\bebebe\Desktop\" + CStr(index) + ".jpg", 2
end with
stream.Close
set stream = nothing
index = index + 1
Next
set images = nothing
set xhr = nothing
set document = nothing