我正在尝试从 wunderground 中提取历史天气数据 - 最初我尝试使用标准 HTML 元素等从主网页上抓取 Web 数据。但是后来我发现如果你将“?format = 1”添加到 URL浏览器将或多或少显示一个更容易解析为数据表的 csv...
但是,我仍在使用 IE 浏览器,如果您要提取大量数据,这可能会很慢,因此我开始研究使用XMLHTTP
对象来帮助更快地提取数据,这就是我遇到问题的地方-正如我提到的添加“? URL 末尾的 format=1" 会返回一个漂亮的 csv,但是当我使用 XMLHTTP 时,它会提取原始页面的 HTML 而不是 CSV!
在我看来,当 XMLHTTP 发送其请求时,如果您愿意,响应会从“父”站点返回,而不是我指定的 csv……我注意到它从以 .html 结尾的 URL 中提取 HTML ,就像它在 .html 处切断一样,这就是为什么响应来自 .html 页面而不是 CSV 页面的原因。所以我尝试研究 URL 协议,看看是否有办法强制 XMLHTTP 请求 csv URL 但是我离我的元素很远,找不到任何东西..
下面的代码-感谢您能给我的任何帮助:
Public Sub downloadWebDataToCSV(URL As String)
Dim ADOStream As ADODB.Stream
Dim XMLHTTP As MSXML2.XMLHTTP60
Set XMLHTTP = New MSXML2.XMLHTTP60
XMLHTTP.Open "GET", URL, False
XMLHTTP.send
If XMLHTTP.Status = 200 Then
Set ADOStream = New ADODB.Stream
With ADOStream
.Open
.Type = adTypeBinary
.Write XMLHTTP.responseBody
.SaveToFile "C:\datafile.csv", 2
.Close
End With
End If
End Sub
如果有帮助,这里还有父 URL 和 csv URL -
主页: https : //www.wunderground.com/history/airport/KDAL/2003/10/15/DailyHistory.html CSV: https ://www.wunderground.com/history/airport/KDAL/2003/10/15 /DailyHistory.html?format=1
提前致谢,TheSilkCode