【发布时间】:2018-08-02 03:29:57
【问题描述】:
我正在尝试使用 VBA 解析 Website。我的目标是提取公司的数据(名称、网站、位置、投资者、投资日期、投资金额等)并将其存储在 Excel 表中。我提取 HTML 源代码的功能如下(至少在我的计算机上有效......)。我使用后期绑定以获得更好的可移植性。
Private Sub getHTMLFromURL()
Dim objHTTP As Object
Dim html As Object
Dim implTmp As Object
Set objHTTP = VBA.CreateObject("MSXML2.XMLHTTP")
Set html = CreateObject("htmlfile")
on error GoTo endProgram
With objHTTP
.Open "GET", URLStr, False
.send
If .READYSTATE = 4 And .Status = 200 Then
html.Open
html.write .responseText
html.Close
Else
Debug.Print "Error" & vbNewLine & "Ready state: " & .READYSTATE & _
vbNewLine & "HTTP request status: " & .Status
GoTo endProgram
End If
End With
endProgram:
Set html = Nothing
Set objHTTP = Nothing
If Err <> 0 Then
Debug.Print "Error in getHTMLFromURL " & Err.Number & " - " & Err.Description
End If
End Sub
我的问题是 HTML 是一个巨大的 SCRIPT 标记,其中隐藏了数据。例如,我猜公司的总部位置在这行代码中:
{"key":"hqLocations","name":"Location","sortable":false,"getText":"function getText(c) {\n return getHQCity(c.hqLocations);\n }"}
我谦虚地承认,我完全不知道如何获取这些数据。我在多个论坛中搜索了很多,但没有找到合适的答案。我试图适应this method,但没有成功。因此,我有几个与我的问题相关的问题:
- 使用 MSXML2.XMLHTTP 是最好的方法吗?
- 我是否必须对每个变量进行钓鱼,或者有没有办法直接解释脚本以获得包含所有数据的 HTML(这样会更容易)?
- 否则,如何提取所有数据(单个数据和数组)?
非常感谢
【问题讨论】:
-
您提供的描述只会模糊您希望获得的输出。请准确地说出您的预期输出。顺便说一句,不要提及类名或标签名:只需讲述该网站上可见的数据即可。
-
我刚刚编辑了我的帖子,希望这样更清楚。我想或多或少地获得页面上显示的所有信息。尤其是“一般”框架和“融资轮次”框架中的内容。
-
你已经注意到,使用
XMLHTTP请求你会得到json响应。但是,当您想从该响应中解析所需字段时,您需要在.responsetext或vba-json parser上应用split函数。最好的方法是选择InternetExplorer作为选项。如果您对此没有问题,那么我可以尝试。谢谢。 -
我很好奇你是怎么做到的。非常感谢您的帮助。
标签: javascript html vba parsing xmlhttprequest