Vba Post请求可以';无法从目标页获取响应
当我运行post请求时,在post请求中编写宏会带来我不想要的意外响应。可能它无法从目标页面获取响应。无法识别我所犯的错误?我正在代码下粘贴的原始url 执行搜索前要选中的框: 行业角色=专业服务提供商 其他标准=顶点Vba Post请求可以';无法从目标页获取响应,vba,web-scraping,xmlhttprequest,Vba,Web Scraping,Xmlhttprequest,当我运行post请求时,在post请求中编写宏会带来我不想要的意外响应。可能它无法从目标页面获取响应。无法识别我所犯的错误?我正在代码下粘贴的原始url 执行搜索前要选中的框: 行业角色=专业服务提供商 其他标准=顶点 Sub Xmlpost() Dim http As New MSXML2.XMLHTTP60 Dim html As New HTMLDocument Dim Items As Object, Item As Object, Elem As Object Dim postdata
Sub Xmlpost()
Dim http As New MSXML2.XMLHTTP60
Dim html As New HTMLDocument
Dim Items As Object, Item As Object, Elem As Object
Dim postdata As String
postdata = "DoMemberSearch=1&mas_last=&mas_comp=&mas_city=&mas_stat=&mas_cntr=&mas_type=Professional+Services+Providers&OtherCriteria=1"
With http
.Open "POST", "https://www.infocomm.org/cps/rde/xchg/infocomm/hs.xsl/memberdirectory.htm", False
.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
.setRequestHeader "User-Agent", "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36"
.send postdata
html.body.innerHTML = .responseText
End With
Set Items = html.getElementById("paginationDataPool").getElementsByTagName("a")
For Each Item In Items
x = x + 1
Cells(x, 1) = Item.innerText
Next Item
End Sub
原文:“
搜索应按如下方式进行:
我得到的结果是:
您正在查找使用类
paginationDisplayItem
的元素,但该类仅由浏览器中运行的JavaScript动态添加,如下所示:
然而,在html
对象中,只有来自POST请求的普通html响应。只需将其保存到一个文件中,自己查看一下,而不是class属性,相同的div
包含一个id属性:
每个连续条目的尾随数字都增加一个
如果您调整循环以基于该id检索元素,那么一切都将按照您的预期工作
概念证明:
For x = 1 To 57
Set Item = html.getElementById("paginationItem_" & x)
Cells(x, 1) = Item.getElementsByTagName("a")(0).innerText
Next x
显然,您不希望在所有情况下都显式地循环到57,所以可以根据您的喜好随意重构它
顺便说一句:您应该将
项声明为IHTMLElementCollection
并将项声明为IHTMLElement
-这样,IntelliSense将在您的对象上工作,并且您将具有类型安全性。您的代码对我有效,它将检索成员目录。到底是什么问题?你希望有什么不同?谢谢利维坦爵士的回答。我上传了一张我最终得到的照片。是的,我也得到了同样的结果。我觉得很好。我重复我的问题:“你希望有什么不同?”再次感谢利维坦爵士的回答。如果我在我的代码中写的是对的,那么你不认为我应该从那页中得到名字列表吗。顺便说一句,我编辑了我的帖子,适合搜索名字。对不起,利维坦爵士,你说的没错。我只是检查了一下,使用一个标记来刮取我得到的内容,是的,它确实从目标页面中获取了名称。我想知道为什么编辑后的代码不能解析名称。我刚刚找到了你在这里解释的。事实上,查看源代码是我在编写代码时不应该忘记的重要因素之一。你的建议使我到达了那里。现在,编辑的代码可以工作了。谢谢。