Excel VBA轻松网页抓取,实用技巧一网打尽!
优采云 发布时间: 2023-04-15 19:23Excel 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优化服务,让您的网站获得更好的排名。