gpt4 book ai didi

html - 如何使用 PowerShell 或 C# 将网页保存到 HTML 文件中?

转载 作者:行者123 更新时间:2023-12-05 00:34:36 25 4
gpt4 key购买 nike

我有以下 link ,当我通过 Chrome 打开链接,然后右键单击页面,然后选择“另存为”将页面保存到 HTML 文件中 (c:\temp\cu2.html)

enter image description here

保存后,我可以用HTML编辑器(比如VS2015)打开这个cu2.html文件,我可以看到
在文件内部,有如下所示的标签

enter image description here

但是,如果我使用 IE11(而不是 Chrome)打开链接,然后将同一页面另存为 HTML 文件,则根本找不到此标签。实际上,IE11 保存的 html 文件与我可以使用下面的 PowerShell 脚本提取的内容相同。

#Requires -version 4.0
$url = 'https://support.microsoft.com/en-us/help/4052574/cumulative-update-2-for-sql-server-2017';

$wr = Invoke-WebRequest $url;
$wr.RawContent.contains('<table') # returns false

$wr.RawContent | out-file -FilePath c:\temp\cu2_ps.html -Force; #same as the file saved from the webpage to html file in IE

所以我的问题是:

为什么 Chrome 中保存的网页(作为 html 文件)与 IE 中的不同?

如何使用 PowerShell(或 C#)将此类网页保存为 HTML 文件(与 Chrome 中保存的文件相同)?

在此先感谢您的帮助。

最佳答案

这些页面使用 AngularJS 和 jQuery。这意味着在文档准备好后将加载一些内容。因此,当您使用 Invoke-WebRequest 发送请求时,您只会收到页面的原始内容。其他内容将在一段时间后加载。

为了解决这个问题,您可以自动化 IE 以获得预期的结果。等待页面准备就绪并等待运行AngularJs逻辑并下载所需内容,然后获取文档元素的内容就足够了:

$ie = new-object -ComObject "InternetExplorer.Application"
$url = "https://support.microsoft.com/en-us/help/4052574/cumulative-update-2-for-sql-server-2017"
$ie.silent = $true
$ie.navigate($url)
while($ie.Busy) { Start-Sleep -Milliseconds 100 }
Start-Sleep 10
$ie.Document.documentElement.innerHTML > "C:\Tempfiles\output.html"
$ie.Stop()
$ie.Quit()

关于html - 如何使用 PowerShell 或 C# 将网页保存到 HTML 文件中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47587888/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com