Dom 如何将网页内容保存到文本文件

Dom 如何将网页内容保存到文本文件,dom,browser,vbscript,Dom,Browser,Vbscript,我使用自动化脚本来测试基于浏览器的应用程序。我想将加载的每个页面的可见文本保存为文本文件。这需要适用于当前打开的浏览器窗口。我遇到过一些使用InternetExplorer.Application的解决方案,但这对我来说不起作用,因为它必须是当前打开的页面 理想情况下,我希望使用vbscript实现这一点。 有没有办法做到这一点?你可以像这样附加到一个已经运行的IE实例上: Set app = CreateObject("Shell.Application") For Each window I

我使用自动化脚本来测试基于浏览器的应用程序。我想将加载的每个页面的可见文本保存为文本文件。这需要适用于当前打开的浏览器窗口。我遇到过一些使用
InternetExplorer.Application
的解决方案,但这对我来说不起作用,因为它必须是当前打开的页面

理想情况下,我希望使用vbscript实现这一点。
有没有办法做到这一点?

你可以像这样附加到一个已经运行的IE实例上:

Set app = CreateObject("Shell.Application")
For Each window In app.Windows()
  If InStr(1, window.FullName, "iexplore", vbTextCompare) > 0 Then
    Set ie = window
    Exit For
  End If
Next
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.OpenTextFile("output.txt", 2, True)
f.Write ie.document.body.innerText
f.Close
然后按如下方式保存文档正文文本:

Set app = CreateObject("Shell.Application")
For Each window In app.Windows()
  If InStr(1, window.FullName, "iexplore", vbTextCompare) > 0 Then
    Set ie = window
    Exit For
  End If
Next
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.OpenTextFile("output.txt", 2, True)
f.Write ie.document.body.innerText
f.Close
如果页面包含非ASCII字符,则可能需要使用Unicode编码创建输出文件:

Set f = fso.OpenTextFile("output.txt", 2, True, -1)
或者将其另存为UTF-8:

Set stream = CreateObject("ADODB.Stream")
stream.Open
stream.Type     = 2 'text
stream.Position = 0
stream.Charset  = "utf-8"
stream.WriteText ie.document.body.innerText
stream.SaveToFile "output.txt", 2
stream.Close

编辑:类似的内容可能有助于消除文档正文中的脚本代码:

Set re = New RegExp
re.Pattern    = "<script[\s\S]*?</script>"
re.IgnoreCase = True
re.Global     = True

ie.document.body.innerHtml = re.Replace(ie.document.body.innerHtml, "")

WScript.Echo ie.document.body.innerText
Set re=New RegExp

re.Pattern=“您可以像这样连接到已经运行的IE实例:

Set app = CreateObject("Shell.Application")
For Each window In app.Windows()
  If InStr(1, window.FullName, "iexplore", vbTextCompare) > 0 Then
    Set ie = window
    Exit For
  End If
Next
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.OpenTextFile("output.txt", 2, True)
f.Write ie.document.body.innerText
f.Close
然后按如下方式保存文档正文文本:

Set app = CreateObject("Shell.Application")
For Each window In app.Windows()
  If InStr(1, window.FullName, "iexplore", vbTextCompare) > 0 Then
    Set ie = window
    Exit For
  End If
Next
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.OpenTextFile("output.txt", 2, True)
f.Write ie.document.body.innerText
f.Close
如果页面包含非ASCII字符,则可能需要使用Unicode编码创建输出文件:

Set f = fso.OpenTextFile("output.txt", 2, True, -1)
或者将其另存为UTF-8:

Set stream = CreateObject("ADODB.Stream")
stream.Open
stream.Type     = 2 'text
stream.Position = 0
stream.Charset  = "utf-8"
stream.WriteText ie.document.body.innerText
stream.SaveToFile "output.txt", 2
stream.Close

编辑:类似的内容可能有助于消除文档正文中的脚本代码:

Set re = New RegExp
re.Pattern    = "<script[\s\S]*?</script>"
re.IgnoreCase = True
re.Global     = True

ie.document.body.innerHtml = re.Replace(ie.document.body.innerHtml, "")

WScript.Echo ie.document.body.innerText
Set re=New RegExp

re.Pattern=“WSH
Shell.Exec/.AppActivate/.SendKeys
方法应该可以完成这项工作。如果可以避免,请不要使用
SendKeys
。这是一种非常不可靠的处理方式。WSH
Shell.Exec/.AppActivate/.SendKeys
方法应该可以完成这项工作。如果可以避免,请不要使用
SendKeys
。这是一种非常不可靠的处理方式。是的,很好的捕获(+1)。只有一个注意事项-如果我使用默认的
OpenTextFile
(以ASCII格式打开),则
上会出现错误的过程调用错误。Write
调用。Unicode工作时打开,即
fso.OpenTextFile(“output.txt”,2,True,-1)
。谢谢Angsar,这就是我要找的。唯一的小问题是,输出文本文件除了文本之外还包含大量脚本代码。有没有办法得到更清晰的输出?谢谢你抽出时间。非常感谢Ansgar,这帮了大忙。最后一件事。我注意到在运行脚本后,Internet Explorer上的页面元素被禁用。我必须关闭并重新打开浏览器才能让它们重新工作。我销毁了所有对象,但没有修复它。@bearaman这可能是因为脚本元素被删除了。是的,很好的捕获(+1)。只有一个注意事项-如果我使用默认的
OpenTextFile
(以ASCII格式打开),则
上会出现错误的过程调用错误。Write
调用。Unicode工作时打开,即
fso.OpenTextFile(“output.txt”,2,True,-1)
。谢谢Angsar,这就是我要找的。唯一的小问题是,输出文本文件除了文本之外还包含大量脚本代码。有没有办法得到更清晰的输出?谢谢你抽出时间。非常感谢Ansgar,这帮了大忙。最后一件事。我注意到在运行脚本后,Internet Explorer上的页面元素被禁用。我必须关闭并重新打开浏览器才能让它们重新工作。我销毁了所有对象,但没有修复它。@bearaman这可能是因为脚本元素被删除了。