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的功能比较简单,但是它可以帮助我们快速地完成一些重复性的工作。同时,本文也提醒大家,在进行网页抓取时一定要遵守相关法律法规,不得侵犯他人的知识产权。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线