使用MSXML从网站获取数据

时间:2015-01-10 15:26:55

标签: vba

我正在尝试使用以下代码对来自此网站的一系列城市进行地理编码:mygeoposition.com但似乎存在某种问题,而变量' Lat'在以下代码中始终返回空:

Sub Code()

Dim IE As MSXML2.XMLHTTP60
Set IE = New MSXML2.XMLHTTP60

IE.Open "GET", "http://mygeoposition.com/?q=Chuo-ku, Osaka", False
IE.send

While IE.ReadyState <> 4
    DoEvents
Wend

Dim HTMLDoc As MSHTML.HTMLDocument
Dim htmlBody As MSHTML.htmlBody

Set HTMLDoc = New MSHTML.HTMLDocument
Set htmlBody = HTMLDoc.body

htmlBody.innerHTML = IE.responseText

Lat = HTMLDoc.getElementById("geodata-lat").innerHTML

IE.abort

End Sub

我有另一个使用浏览器执行相同操作的代码,它可以正常工作,但速度很慢。当我在MSXML中使用此代码时,它只是不起作用。道歉我是一个使用VBA从网站上提取数据的新手。请帮忙。

1 个答案:

答案 0 :(得分:0)

响应中不包含geodata-lat元素中的内容。似乎客户端代码正在获取该数据,因此您的响应仅查看服务器生成的html。我自己尝试了这个,这是你正在寻找的响应部分。你可以看到它是空的: xmlhttp response

如果你尝试一个包含内容的元素(geodata-kml-button),它会输入一个值(“下载KML文件”)。忽略ByteArrayToString()调用,这只是我测试: enter image description here

如果他们没有真正的API,那么我认为你不能以这种方式获取数据。