在VBA中使用XMLHTTP解析/刮取多个页面

在VBA中使用XMLHTTP解析/刮取多个页面,vba,excel,web-scraping,xmlhttprequest,Vba,Excel,Web Scraping,Xmlhttprequest,下面的代码只将一页数据(50个结果)刮取/解析到excel中,但是,我希望它能够刮取多页(500个结果)-请帮助。(Base64Encode是从另一个来源获取的-我不认为它有什么功劳) 函数GetData()作为布尔值 Application.ScreenUpdating=False Dim objHTTP作为新的MSXML2.XMLHTTP 暗弦 Dim strUserName作为字符串 将strPassword设置为字符串 表1.范围(“A2:R2000”)=“” 表1.激活 strUser

下面的代码只将一页数据(50个结果)刮取/解析到excel中,但是,我希望它能够刮取多页(500个结果)-请帮助。(Base64Encode是从另一个来源获取的-我不认为它有什么功劳)

函数GetData()作为布尔值 Application.ScreenUpdating=False Dim objHTTP作为新的MSXML2.XMLHTTP 暗弦 Dim strUserName作为字符串 将strPassword设置为字符串 表1.范围(“A2:R2000”)=“” 表1.激活 strUserName=“用户” strPassword=“密码” 对于i=1到UBound(MyArray) strURL=”https://.ngx.com/ngxcs/indexPrice.xml" objHTTP.Open“GET”,strURL,False objHTTP.setRequestHeader“授权”、“基本”和base64编码(strUserName&“:”和strPassword) objHTTP.setRequestHeader“主机”、“secure.example.com” objHTTP.setRequestHeader“内容类型”、“文本” objHTTP.send“Nothing” 而objHTTP.readyState 4 多芬特 温德 接收为字符串的Dim STR响应 strResponseReceived=objHTTP.responseText Debug.Print objHTTP.responseText 收到MsgBox strresponsed Dim xDoc作为DOMDocument Set xDoc=新文档 xDoc.LoadXML objHTTP.responseText` “好的,好的” 将其输出到excel的其余代码


谢谢你的帮助

虽然您的代码已被修改到无法操作的地步(请参阅strURL字符串串联),但您可能会在中找到答案。@Jeeped那里我做了一些小改动-我仍然无法理解。请给我一些提示-我还是个新手“readystate似乎不工作”-你到底看到了什么让你这么想?这可能与readystate无关,但与每页显示的结果数有关。您可能只看到第一页,其中有50个结果。请尝试是否有更改该号码的设置,或者查看URL中是否有对该号码的引用。否则,你可能会想在URL中的页码之间做一个循环。上帝啊,伙计们,放轻松点-我还是一个初学者,虽然你的代码已经被修改到无法运行的地步(请参阅strURL字符串连接),你可能会在中找到答案。@Jeeped那里我做了一些小的更改-我仍然搞不清楚。请给我一些提示-我还是个新手“readystate似乎不工作”-你到底看到了什么让你这么想?这可能与readystate无关,但与每页显示的结果数有关。您可能只看到第一页,其中有50个结果。请尝试是否有更改该号码的设置,或者查看URL中是否有对该号码的引用。否则,你可能会想做一个循环,通过你的URL中的页码进行循环。上帝啊,伙计们,让我放松点,我还是个初学者
`Function GetData() As Boolean
 Application.ScreenUpdating = False


 Dim objHTTP As New MSXML2.XMLHTTP

 Dim strURL As String
 Dim strUserName As String
 Dim strPassword As String


 Sheet1.Range("A2:R2000") = ""

 Sheet1.Activate

 strUserName = "User"
 strPassword = "Password"

 For i = 1 To UBound(MyArray)

 strURL = "https://.ngx.com/ngxcs/indexPrice.xml" 
 objHTTP.Open "GET", strURL, False
 objHTTP.setRequestHeader "Authorization", "Basic " & Base64Encode(strUserName & ":" & strPassword)
objHTTP.setRequestHeader "Host", "secure.example.com"
objHTTP.setRequestHeader "Content-Type", "text"

objHTTP.send "Nothing"

While objHTTP.readyState <> 4
   DoEvents
Wend

Dim strResponseReceived As String

strResponseReceived = objHTTP.responseText
Debug.Print objHTTP.responseText
MsgBox strResponseReceived


Dim xDoc As DOMDocument
Set xDoc = New DOMDocument

xDoc.LoadXML objHTTP.responseText`