2012-07-17 85 views
2

我想保存一個網頁(就像我們在瀏覽器中做的)以及它的所有內容和 格式。我嘗試了WebClient,WebRequest的例子,但他們只能下載文本部分,有時也可以下載javascript。但沒有CSS和圖像等 有.net中的任何api,或.net的任何第三方API?保存一個網頁及其所有內容在C#

這是可能的,我認爲這是因爲很多應用程序正在運行離線閱讀,並且它們顯示保存的頁面具有相同的格式和樣式。 它是如何完成的? 任何想法?

編輯1: 網頁可以使用HtmlAgilityPack解析和保存。但是有沒有什麼辦法可以讓主要文章和其他內容像廣告,其他外部鏈接分開。有什麼辦法可以區分相關內容和不相關內容? (對不起,如果這個問題不清楚)。

也可以提供一些建議,說明這些離線閱讀應用程序(如稍後閱讀/口袋等)如何保存網頁並對其進行格式化。

有沒有辦法在C#中做同樣的事情?

+0

Mabye這個[SO問題](http://stackoverflow.com/questions/1263266/c-sharp-find-image-in-html-and-download-them)可以幫助你 – tsukimi 2012-07-17 05:38:32

回答

4

你可以下載一個網頁正文爲HTML,然後分析它,並獲得<link rel="stylesheet" type="text/css" href="..."><img src="..."/>元素和像hrefsrc單獨屬性的下載鏈接。

HtmlAgilityPack是一個可靠和有用的庫解析Htmls。

+0

你好Ria,我試過HtmlAgilityPack現在我可以下載圖像和其他鏈接,如CSS和JS文件,但仍然看起來不太好看。沒有格式。我將href和src屬性的路徑更改爲本地目錄。但沒有效果。 – Deeps 2012-07-18 05:07:48

+0

@Deeps:你好,你確定你爲本地文件插入了有效地址:'file:///'前綴,或者使用'/'而不是'''或'%20'來代替空格和.... – Ria 2012-07-18 06:29:36

+0

是的,我檢查過它們。路徑很好。我認爲css和js的文件是受保護的,因此,它們在沒有任何文本的情況下被下載。有什麼辦法可以解決它。我嘗試給用戶代理下載文件的網絡請求,但沒有改變。 – Deeps 2012-07-18 06:56:04

2

您可以試着將頁面保存爲mht文件。 這些文件捆綁了網頁及其所有參考的,在一個緊湊的文件(的.mht)

Stackoverflow topic about mht via c#

注:MHT是由微軟推出。並非所有的瀏覽器都符合這種格式。 Opera是唯一擁有MHT保存功能的其他流行瀏覽器。 Firefox用戶雖然可以調用兩個附加組件來處理這個文件標準,Mozilla存檔格式& UnMHT。這兩個附加組件都可以安裝並用於打開和保存完整的網頁。

相關問題