如何用VB在浏览器页面中强制向下滚动?

问题描述 投票:0回答:1

使用此代码,我可以访问此网页并捕获前 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
vba ms-access web-scraping
1个回答
0
投票

Microsoft.XMLHTTP
的特点是它不是浏览器,它主要是一个库,允许您向服务器发送和接收 HTTP 请求,但它不会渲染页面,也不会在客户端上执行任何 Javascript 代码 -侧面。

如果您需要滚动页面并触发Javascript代码来加载更多结果,则需要使用浏览器。使用 VBA 有几种方法可以做到这一点,但最常见的方法是使用流行的 Selenium Library 的 VBA 包装器。

关于选择哪个包装器,最受欢迎的是 SeleniumBasic。甚至还有一个视频教程可以帮助您开始使用 Chrome。

但是,SeleniumBasic 已经有一段时间没有收到更新了,并且它不再适用于 FireFox。如果您需要使用 FireFox 或者想使用更新的项目,您还可以查看 SeleniumVBA TinySeleniumVBA

© www.soinside.com 2019 - 2024. All rights reserved.