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

Excel 将HTML导出到具有不同结果的文本文件,excel,vba,xmlhttprequest,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.inne

我有两个密码。。将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文档是不同的结果 你能帮我弄清楚什么是正确的吗。。为什么它们不同


感谢高级帮助

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

另一方面,Internet Explorer将呈现该页面(前提是支持浏览器版本和JavaScript语法。例如,您将遇到ec6-最新Ecmascript的问题,因为这在旧版浏览器上不受支持。我相信在Windows 10的Edge上是这样的。您可以查看兼容性表,查看哪些是受支持的,哪些是不受支持的)

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

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

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

如果需要更深入的解释,请提供差异


探索页面更新:


  • 它们有什么不同?一旦加载到浏览器中,脚本就可以更改/添加页面内容。这在XMLHttp中不会发生。非常感谢您的详细解释。事实上,我正在寻找一种方法来获得与>>导航到url时相同的内容,然后在chrome中按F12,然后右键单击第一个html并复制元素。这怎么可能呢我们可以通过代码完成吗?您可以选择带有.document.getElementsByTagName(“html”)(0)的html标记。我认为最后一条注释就是我所寻求的解决方案。非常感谢您的帮助