VBScript从TARGET URL下载多个图像

时间:2018-07-18 01:16:13

标签: image vbscript stream xmlhttprequest

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下载多个图像。

1 个答案:

答案 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
相关问题