3

我正在尝试保存网页(就像我们在浏览器中所做的那样)及其所有内容和格式。我尝试了 WebClient、WebRequest 示例,但它们只能下载文本部分,有时还可以下载 javascript。但是没有 css 和图像等。.Net 中是否有任何 api 或 .net 的任何 3rd 方 api?

这是可能的,我认为这是因为许多应用程序正在运行以进行离线阅读,并且它们以相同的格式和样式显示已保存的页面。它是如何完成的?有任何想法吗 ?

编辑 1: 可以使用 HtmlAgilityPack 解析和保存网页。但是有什么方法可以将主要文章和其他内容(如广告,其他外部链接)分开。有什么方法可以区分相关内容和不相关内容吗?(对不起,如果这个问题不清楚)。

也有人可以提出一些建议,说明这些离线阅读应用程序(如稍后阅读/袖珍等)如何保存网页并对其进行格式化。

有没有办法在 C# 中做同样的事情?

4

3 回答 3

4

您可以将页面文本下载为 Html,然后对其进行解析并获取<link rel="stylesheet" type="text/css" href="..."><img src="..."/>元素并下载属性hrefsrc单独的链接。

HtmlAgilityPack是一个可靠且有用的 Html 解析库。

于 2012-07-17T05:40:39.363 回答
2

你可以使用wget

https://www.gnu.org/software/wget/manual/html_node/Recursive-Download.html#Recursive-Download

于 2012-07-17T05:40:12.473 回答
2

您可以尝试将页面保存为mht文件。这些文件将网页及其所有引用捆绑到一个压缩文件 (.mht) 中

Stackoverflow主题关于mht via c#

注意:MHT 是由 Microsoft 引入的。并非所有浏览器都符合这种格式。Opera 是唯一具有 MHT 保存的其他流行浏览器。Firefox 用户虽然可以调用两个附加组件来处理此文件标准,Mozilla 存档格式和 UnMHT。这两个插件都可以安装并用于打开和保存完整的网页。

于 2012-07-17T05:53:39.023 回答