Excel VBA轻松网页抓取,实用技巧一网打尽!

优采云 发布时间: 2023-04-15 19:23

  Excel VBA可以实现很多自动化操作,其中之一就是网页数据抓取。这篇文章将介绍如何使用Excel VBA来抓取网页中的Href链接。本文分为8个方面进行逐步分析讨论。

  一、引用Microsoft HTML Object Library库

  在VBA编辑器中,选择菜单栏的工具->引用,然后勾选Microsoft HTML Object Library库,点击确定即可。

  二、创建XMLHttpRequest对象

  使用VBA创建一个XMLHttpRequest对象,并指定请求类型和请求地址:

  

Dim xhr As New MSXML2.XMLHTTP60

xhr.Open "GET","https://www.ucaiyun.com/"

xhr.send

  三、等待请求完成

  使用While循环等待请求完成:

  

Do While xhr.ReadyState <> 4

DoEvents

Loop

  四、获取响应内容

  使用responseText属性获取响应内容:

  

Dim html As New MSHTML.HTMLDocument

html.body.innerHTML = xhr.responseText

  五、解析HTML文档

  

  使用getElementsByTagName方法获取所有的a标签,并遍历每个a标签,获取其href属性:

  

Dim allLinks As Object, link As Object

Set allLinks = html.getElementsByTagName("a")

For Each link In allLinks

Debug.Print link.href

Next link

  六、处理相对路径

  有些链接是相对路径,需要处理成完整的链接:

  

Dim baseUrl As String

baseUrl ="https://www.ucaiyun.com/"

For Each link In allLinks

If InStr(link.href,"http")<> 1 Then

link.href = baseUrl & link.href

End If

Next link

  七、导出数据到Excel

  将链接导出到Excel表格中:

  

Dim i As Long

i = 1

For Each link In allLinks

Range("A"&i).Value = link.href

i = i + 1

Next link

  八、完整代码

  将以上步骤整合起来,得到完整的代码如下:

  

Sub GrabHref()

Dim xhr As New MSXML2.XMLHTTP60

xhr.Open "GET","https://www.ucaiyun.com/"

xhr.send

Do While xhr.ReadyState <> 4

DoEvents

Loop

Dim html As New MSHTML.HTMLDocument

html.body.innerHTML = xhr.responseText

Dim allLinks As Object, link As Object

Set allLinks = html.getElementsByTagName("a")

Dim baseUrl As String

baseUrl ="https://www.ucaiyun.com/"

For Each link In allLinks

If InStr(link.href,"http")<> 1 Then

link.href = baseUrl & link.href

End If

Next link

Dim i As Long

i = 1

For Each link In allLinks

Range("A"&i).Value = link.href

i = i + 1

Next link

End Sub

  通过Excel VBA抓取网页Href链接,可以大大提高工作效率。如果您想学习更多Excel VBA技巧,可以关注优采云官网www.ucaiyun.com,我们提供专业的培训课程,帮助您成为Excel VBA高手。同时,我们也提供SEO优化服务,让您的网站获得更好的排名。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线