使用C#保存包含所有内容的网页

时间:2012-07-17 05:33:51

标签: c# .net web-scraping webpage

我正在尝试保存网页(就像我们在浏览器中一样)及其所有内容和 格式。我尝试了WebClient,WebRequest示例,但他们只能下载文本部分,有时还会下载javascript。但没有CSS和图像等。 在.Net中是否有任何api,或者.net的任何第三方API?

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

编辑1: 可以使用HtmlAgilityPack解析和保存网页。但有没有办法让主要文章和其他内容如广告,其他外部链接分开。有没有办法区分相关的内容和哪些内容不相关? (对不起,如果这个问题不明确的话)。

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

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

3 个答案:

答案 0 :(得分:4)

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

HtmlAgilityPack是一个可靠而有用的库,用于解析Htmls。

答案 1 :(得分:2)

答案 2 :(得分:2)

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

Stackoverflow topic about mht via c#

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