VBScript 从目标下载多个图像 URL

VBScript Download Multiple Images from the TARGET URL

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

以上是我的代码,我正在尝试从 "TARGET URL" 下载多张图片。

我目前正在寻找的最佳解决方案是通过 VBS 下载多个图像,但 VBA 也是可能的选择。

从上面的VBScript,我不确定如何用Stream循环从指定的URL..

下载多个图像

您知道如何编写循环(您已经在使用了)。只需将 getElementsByTagName("img")(0) 替换为 getElementsByTagName("img")(index),其中 index 是循环递增的变量。 getElementsByTagName("img") returns 一个集合,您可以查询它 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