2016-08-01 26 views
0

我已经将网页下载为html并存储在本地文件夹中。现在,我想用excel VBA宏读取相同的html文件并解析特定的标签。问题是:当我尝试从本地html文件读取并将整个文件数据分配为html时,html标签属性发生了变化。问题阅读带有html标签的文本文件,并将它们转换成htmldoc VBA

我无法获得正确的html属性,因此我无法解析它。当我尝试读取html,然后分配给一个html对象并将数据写回到一个文件中时,我看到下面的结果。这就是我无法正确解析td.classname =“detb”的原因。

为前:原标签的 一部分作为本地的HTML文件

<tbody> 
<tr height=""22""> 
<td width=""40%"" class=""detb"" colspan=""1""></td> 

<td align=""right"" class=""detb"">Mar 13</td> 
<td align=""right"" class=""detb"">Mar 12</td> 
<td align=""right"" class=""detb"">Mar 11</td> 
<td align=""right"" class=""detb"">Mar 10</td> 
<td align=""right"" class=""detb"">Mar 09</td> 
</tr> 

下面的数据类型,当我读文件,然后指定一个HTML对象,并显示/写回文件:

<tbody><tr height="""" 22""""=""""> 
<td width="""" colspan=""1"" 1""""="""" 40%""""="""" detb""""=""""></td> 

<td align="""" right""""="""" detb""""="""">Mar 13</td> 
<td align="""" right""""="""" detb""""="""">Mar 12</td> 
<td align="""" right""""="""" detb""""="""">Mar 11</td> 
<td align="""" right""""="""" detb""""="""">Mar 10</td> 
<td align="""" right""""="""" detb""""="""">Mar 09</td> 
</tr> 

代码:

Set MyBrowser = CreateObject("InternetExplorer.Application") 

With MyBrowser 
    .navigate << html file path >> 
    .Visible = True 

    Set HTMLDoc = MyBrowser.document 


    Open myFilePrev2 For Output As #1 
    Write #1, HTMLDoc.body.innerHTML 
    Close #1 

    .Quit 
End With 

能否请你帮我。

干杯, 拉哈夫

回答

0
Write #1, HTMLDoc.body.innerHTML 

应该

Print #1, HTMLDoc.body.innerHTML 

https://msdn.microsoft.com/en-us/library/office/gg264524(v=office.14).aspx

不像Print#语句,写入#语句插入周围的物品和引号之间的逗号 字符串,因为它们被写入 到文件。您不必在列表中添加明确的分隔符。 Write#在输出列表中将最终的 字符写入文件后,插入一个换行符,即一个滑块 return-linefeed(Chr(13)+ Chr(10))。

+0

您好,感谢您的建议。我会尝试。除了将内容写入文件之外,我的问题主要是读取带有html标签的文本文件,并将整个文件分配给htmldoc。我试图使用这种回写策略来检查本地文本文件(带有html标签)是如何读取的,因为它没有像原始HTML文件中那样提供所有属性。要清楚,问题是后张开HTML文件在互联网扩展和保存源代码为“HTMLDoc”,我无法获得标记条件“td.classname =”detb“,它存在于输入html中... – Raghavan

相关问题