使用此代码,我可以访问此网页并捕获前 10 个事件。 问题是有 30 多个事件,我需要捕获所有事件。 当您使用鼠标手动滚动时,某些事件会触发对接下来 10 个事件的检索。 我如何在 VBA 中以编程方式执行此操作,直到我了解到底?
Sub DownloadFile()
Dim WinHttpReq As Object
Dim oStream As Object
Dim myURL As String
Dim LocalFilePath As String
myURL = "https://www.meetup.com/cflfreethought/events/"
LocalFilePath = "C:\Users\Brooks\Desktop\HTML_download.txt"
Set WinHttpReq = CreateObject("Microsoft.XMLHTTP")
WinHttpReq.Open "GET", myURL, False, "", "" '("username", "password")
WinHttpReq.send
If WinHttpReq.status = 200 Then
Set oStream = CreateObject("ADODB.Stream")
oStream.Open
oStream.Type = 1
oStream.Write WinHttpReq.responseBody
oStream.SaveToFile LocalFilePath, 2 ' 1 = no overwrite, 2 = overwrite
oStream.Close
End If
End Sub
Microsoft.XMLHTTP
的特点是它不是浏览器,它主要是一个允许您发送和接收HTTP请求的库,但它不会渲染HTML页面,也不会在客户端执行任何JavaScript代码.
如果您需要滚动页面并触发Javascript代码来加载更多结果,则需要使用浏览器。使用 VBA 有几种方法可以做到这一点,但最常见的方法是使用流行的 Selenium Library 的 VBA 包装器。
关于选择哪个包装器,最受欢迎的是 SeleniumBasic。甚至还有一个视频教程可以帮助您开始使用 Chrome。
但是,SeleniumBasic 已经有一段时间没有收到更新了,并且它不再适用于 FireFox。如果您需要使用 FireFox 或者想使用更新的项目,您还可以查看 SeleniumVBA 或 TinySeleniumVBA。