将HTML导出到具有不同结果的文本文件

时间:2018-11-03 15:58:22

标签: excel vba excel-vba xmlhttprequest

我有两个代码..应该可以将html文件导出为文本文件

Sub Demo1()
Dim http        As New XMLHTTP60
Dim html        As New HTMLDocument

With http
    .Open "GET", "https://www.google.com.eg/", False
    .send
    html.body.innerHTML = .responseText

    WriteTxtFile html.body.innerHTML
End With
End Sub

Sub WriteTxtFile(ByVal aString As String, Optional ByVal filePath As String = "C:\Users\Future\Desktop\Output.txt")
Dim fso         As Object
Dim fileout     As Object

Set fso = CreateObject("Scripting.FileSystemObject")
Set fileout = fso.CreateTextFile(filePath, True, True)
fileout.write aString
fileout.Close
End Sub

Sub Demo2()
Dim ie          As Object
Dim f           As Integer

Set ie = CreateObject("InternetExplorer.Application")

With ie
    .Visible = True
    .navigate ("https://www.google.com.eg/")

    Do: DoEvents: Loop Until .readyState = 4

    f = FreeFile()
    Open ThisWorkbook.Path & "\Sample.txt" For Output As #f
    Print #f, .document.body.innerHTML
    Close #f

    .Quit
End With
End Sub

Demo1和Demo2均为代码..,它们分别产生“ Sample.txt”和“ Output.txt” 但是我发现那些html文档是不同的结果 您能帮我弄清楚什么是正确的..以及为什么它们不同吗?

感谢高级帮助

1 个答案:

答案 0 :(得分:2)

Xmlhttp不提供网页的所有呈现内容。特别是通过JavaScript执行呈现的任何内容。任何脚本都不会执行。

另一方面,

Internet Explorer将呈现页面(只要支持浏览器版本并支持JavaScript语法。例如,您将遇到ec6问题-最新的Ecmascript,因为旧版浏览器不支持此问题。相信Edge for Windows10。您可以检查兼容性表,以完整地查看支持和不支持的功能。

如果您熟悉浏览器的开发工具,则可以探索如何呈现网页的不同部分。您可以学习调试脚本,并查看对DOM和页面样式进行了哪些更改。例如,页面通常会发出XHR请求以更新页面上的内容。如果您想玩耍,请看here

因此,我怀疑在此基础上,第一个html文档的内容可能较少,而总体DOM结构却与第二个不同。

要测试由于写入文本文件方法而引起的差异,您需要将Apple与Apple进行比较,即在写入之前使用相同的抓取访问方法和语法来检索页面内容。

如果需要更深入的说明,请提供差异。


浏览页面更新:

  1. Firefox Network Tab
  2. Internet Explorer Network Inspector
  3. Chrome Network Tab