【问题标题】:Saving a Web Page with all its content in C#在 C# 中保存包含所有内容的网页
【发布时间】:2012-07-17 05:33:50
【问题描述】:

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

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

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

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

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

【问题讨论】:

标签: c# .net web-scraping webpage


【解决方案1】:

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

HtmlAgilityPack 是用于解析 Htmls 的可靠且有用的库。

【讨论】:

  • 你好 Ria,我尝试了 HtmlAgilityPack,现在我可以下载图片和其他链接,如 css 和 js 文件,但页面仍然看起来不太好。没有格式。我将 href 和 src 属性的路径更改为本地目录。但没有效果。
  • @Deeps: 你好 Deeps,你确定你为本地文件插入了有效地址吗:file:/// 前缀或使用/ 而不是\ 或使用%20 而不是空格和.. ..
  • 是的,我已经检查过了。路径很好。我认为 css 和 js 的文件是受保护的,因此,下载它们时没有任何文本。有什么办法可以解决。我尝试将用户代理提供给下载文件的网络请求,但没有任何变化。
【解决方案2】:
【解决方案3】:

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

Stackoverflow topic about mht via c#

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-09-19
    • 2020-08-13
    • 1970-01-01
    • 1970-01-01
    • 2022-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多