VBA抓取网页图片,让你的收藏夹更丰富
优采云 发布时间: 2023-04-12 11:28在如今这个信息爆炸的时代,我们每天都会接触到各种各样的图片。有时候我们会看到一些很喜欢的图片,想要保存到自己的电脑或者手机里,但是手动去一个一个下载实在是太麻烦了。那么有没有什么方法可以快速地批量下载网页上的图片呢?答案是肯定的!本文将介绍如何使用VBA来抓取网页上的图片,让你轻松拥有更丰富的收藏夹。
一、VBA介绍
VBA全称Visual Basic for Applications,是微软公司开发的一种基于Visual Basic语言的脚本语言。它可以通过Microsoft Office系列软件中内置的宏编写器来编写及运行程序代码。由于其易学易用、灵活多变等特点,VBA被广泛应用于各个领域中。
二、抓取网页图片流程
下面是抓取网页图片的基本流程:
1.获取需要下载的网页地址。
2.通过HTTP协议向服务器发送请求,获取网页源代码。
3.解析HTML源代码,找到所有需要下载的图片地址。
4.通过HTTP协议向服务器发送请求,下载图片并保存到本地。
三、获取网页地址
首先我们需要获取需要下载的网页地址。可以手动输入地址,也可以通过VBA代码从其他来源获取地址。比如我们可以从Excel表格中读取需要下载的网页地址。
VBA
Sub GetWebAddr()
Dim WebAddr As String
WebAddr = Range("A1").Value '假设需要下载的网页地址在A1单元格中
End Sub
四、获取网页源代码
获取到需要下载的网页地址之后,我们就需要通过HTTP协议向服务器发送请求,获取网页源代码。这里我们使用VBA内置的XMLHTTP对象来实现。
VBA
Sub GetWebSource()
Dim WebAddr As String
Dim WebSource As String
WebAddr = Range("A1").Value '假设需要下载的网页地址在A1单元格中
With CreateObject("MSXML2.XMLHTTP")
.Open "GET", WebAddr, False
.Send
WebSource =.responseText '获取网页源代码
End With
End Sub
五、解析HTML源代码
得到了网页源代码之后,我们就需要解析HTML源代码,找到所有需要下载的图片地址。这里我们使用VBA内置的DOMDocument对象来实现。
VBA
Sub GetImgSrc()
Dim WebSource As String
Dim Doc As Object 'DOMDocument对象
Set Doc = CreateObject("htmlfile")
WebSource = Range("B1").Value '假设网页源代码在B1单元格中
Doc.Write WebSource '将网页源代码写入DOMDocument对象中
For Each Img In Doc.getElementsByTagName("img")'获取所有<img>标签
Debug.Print Img.src '输出图片地址
Next
End Sub
六、下载图片并保存
最后一步就是下载图片并保存到本地了。这里我们使用VBA内置的URLDownloadToFile函数来实现。
VBA
Sub DownloadImg()
Dim ImgSrc As String
Dim SavePath As String
ImgSrc = Range("C1").Value '假设图片地址在C1单元格中
SavePath = Range("D1").Value '假设保存路径在D1单元格中
URLDownloadToFile 0, ImgSrc, SavePath,0, 0 '下载并保存图片
End Sub
七、完整代码
下面是完整的VBA代码,可以直接复制到Excel宏中运行。
VBA
Sub GetImg()
Dim WebAddr As String
Dim WebSource As String
Dim Doc As Object 'DOMDocument对象
Set Doc = CreateObject("htmlfile")
WebAddr = Range("A1").Value '需要下载的网页地址
With CreateObject("MSXML2.XMLHTTP")
.Open "GET", WebAddr, False
.Send
WebSource =.responseText '获取网页源代码
End With
Doc.Write WebSource '将网页源代码写入DOMDocument对象中
For Each Img In Doc.getElementsByTagName("img")'获取所有<img>标签
URLDownloadToFile 0, Img.src, Range("B1").Value &"\"& Img.getAttribute("alt")&".jpg",0, 0 '下载并保存图片
Next
End Sub
八、总结
通过本文的介绍,我们学习了如何使用VBA来抓取网页上的图片。虽然VBA的功能比较简单,但是它可以帮助我们快速地完成一些重复性的工作。同时,本文也提醒大家,在进行网页抓取时一定要遵守相关法律法规,不得侵犯他人的知识产权。