2014-10-16 129 views
1

我希望Excel解析特定表的HTML文件。VBA获取HTML文档的DOM

我目前的方法是获取该文件的DOM表示并解析该文件。问题是DOMDocument60抛出一个解析错误(“无效的语法”)。经过一些研究后,我发现DOMDocument60对象只与XML兼容。

是否有任何其他选项可以获取HTML文件的DOM?

Sub myWebTest() 
    On Error Resume Next 
    Set File = CreateObject("Msxml2.XMLHTTP") 

    File.setTimeout 2000, 2000, 2000, 2000 
    File.Open "GET", "http://www.microsoft.com/en-au/default.aspx:80", False 
    'This is IE 8 headers 
    File.SetRequestHeader "User-Agent", "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 1.1.4322; .NET CLR 3.5.30729; .NET CLR 3.0.30618; .NET4.0C; .NET4.0E; BCD2000; BCD2000)" 
    File.Send 

    On Error GoTo 0 

    Set dom = CreateObject("Msxml2.DOMDocument") 
    'Dim dom As New DOMDocument60 
    dom.LoadXML File.ResponseText 
    MsgBox dom.ChildNodes.Length 
End Sub 

回答

1

如果这是一次性事情,您可以尝试Excel的内置导入工具。单击数据|获取外部数据(从Web)。你可以给它HTML页面的URL。

+1

好主意,但是我想每周更新一次相同格式的50页 – Alter 2014-10-16 18:40:50

+0

您可以使用“获取外部数据”来录制宏,然后将其用作脚本的起点。 – ariscris 2014-10-16 18:45:14

+0

它工作得到一个表,但我真的想要整个文件的DOM表示。 我已经有一个代码基础,从网上检索HTML文件,我只是试图解析响应。使用导入工具使事情比使用我自己的解析器更复杂。 – Alter 2014-10-16 19:00:39