我一直在使用IE从Excel中抓取这个网站,但最近使用IE已经不一致和缓慢。我的列表通常在500到1000左右,所以我必须在一夜之间运行宏。最近宏开始挂断。这就是为什么我决定第一次使用MSXML2进行资源管理器的搜索。XML网络动态密钥刮网站
该网站不需要认证,但它具有动态更改的隐藏输入。
我做了什么..我使用GET来拉动网站并提取动态密钥,然后尝试使用POST将输入数据发送到网站。我一直在获取服务器错误/运行时错误。我曾尝试使用不同的标题请求选项,但我仍然没有得到结果页。我也尝试使用MSXML2.ServerXMLHTTP。我在正确的轨道上吗?
感谢
Sub test_66()
Dim oXML_get
'Dim oXML_post
Dim sendText As String, s2 As String, n1 As Integer, postUrl As String, sHTML As String, s1 As String
' Instantiate MSXML2
Set oXML_get = New MSXML2.XMLHTTP
oXML_get.Open "GET", "http://www.phila.gov/revenue/realestatetax/default.aspx", False
oXML_get.setRequestHeader "Accept", "text/html;charset=UTF-8"
oXML_get.setRequestHeader "Accept-Encoding", "identity"
oXML_get.setRequestHeader "Accept-Charset", "UTF-8" 'Connection keep -alive
oXML_get.setRequestHeader "Connection", "keep -alive"
oXML_get.send
sHTML = oXML_get.responseText
'Debug.Print sHTML
Dim hDOC As MSHTML.HTMLDocument
Set hDOC = New MSHTML.HTMLDocument
hDOC.body.innerHTML = sHTML
s1 = Replace(hDOC.getElementsByTagName("input").Item(2).Value, "/", "%2F")
s2 = Replace(hDOC.getElementsByTagName("input").Item(3).Value, "/", "%2F")
sendText = "__VIEWSTATE=" & s1 & "&__EVENTVALIDATION=" & s2 & "&ctl00%24BodyContentPlaceHolder%24SearchByBRTControl%24txtTaxInfo=043185500&ctl00%24BodyContentPlaceHolder%24SearchByBRTControl%24btnTaxByBRT=%20>>"
Debug.Print sendText '"__EVENTTARGET=&__EVENTARGUMENT=&__VIEWSTATE=" & s1 & "__EVENTVALIDATION=" & s2 &
oXML_get.Open "POST", "http://www.phila.gov/revenue/realestatetax/default.aspx", False
oXML_get.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
oXML_get.setRequestHeader "Accept", "text/html;charset=UTF-8"
oXML_get.setRequestHeader "Accept-Encoding", "identity"
oXML_get.setRequestHeader "Accept-Charset", "UTF-8" 'Connection keep -alive
'oXML_get.setRequestHeader "Connection", "keep -alive"
oXML_get.send (sendText)
Dim objIE As Object: Set objIE = CreateObject("InternetExplorer.Application")
objIE.navigate "about:blank"
objIE.Visible = True
objIE.document.Write oXML_get.responseText
End Sub
这是我收到运行时错误消息....
Server Error in '/revenue/RealEstateTax' Application.
<!-- Web.Config Configuration File -->
<configuration>
<system.web>
<customErrors mode="Off"/>
</system.web>
</configuration>
检查,如果你只是缺少&'sendText = “__VIEWSTATE =” &S1&“&__ EVENTVALIDATION = “...' – omegastripes
你说得对,我会更新并检查代码。感谢您的快速响应。 – user3121922
我插入了&符号,但仍然收到来自服务器的相同错误。我已经更新了上面的代码。 – user3121922