2015-10-07 103 views
0

我想在C#.net中使用WebClient獲取所有網站源代碼, 我在C#窗體中創建了一個簡單代碼 我嘗試了其他網站工作正確,但我需要這個網站,我不能得到它。 我的代碼:錯誤獲取C#中的html頁面源代碼.net

using (WebClient client = new WebClient()) 
      { 
       client.Encoding = Encoding.UTF8; 
       client.Encoding = UTF8Encoding.UTF8; 
       string htmlCode = client.DownloadString("http://www.feleziran.ir/products/milgerd"); 
       byte[] bytes = Encoding.Default.GetBytes(htmlCode); 
       htmlCode = Encoding.UTF8.GetString(bytes); 
      } 

當我使用斷點和獲取視圖中xml顯示此消息htmlDode:

的XML頁面無法顯示使用樣式 表無法查看XML輸入。請更正錯誤,然後單擊刷新按鈕,或稍後再次嘗試 。


在文檔的頂層無效。處理資源時出錯 'file:/// C:/Users/user/AppData/Local/Temp/VSD1.tmp.XML'...

?^

有沒有更好的辦法做到這一點?我怎麼能解決它?

回答

0

Html文檔可能並不總是有效的XML文件。所以你不應該用一個XML查看器來顯示它。嘗試保存並用瀏覽器打開它。

using (WebClient client = new WebClient()) 
{ 
     client.Encoding = Encoding.UTF8; 
     client.Encoding = UTF8Encoding.UTF8; 
     string htmlCode = client.DownloadString("http://www.feleziran.ir/products/milgerd"); 
     System.IO.File.WriteAllText("c:\\htmlfile.html", htmlCode); 

} 

反正你想達到什麼,這還不夠,你必須解析HTML中的各個環節,並下載它們。

0

您沒有提供所有的代碼,因爲它似乎你那麼htmlCode字符串保存到臨時文件,然後供應內容到一個XML閱讀器。

但無論如何,問題是,從該特定網站下載的HTML是HTML5標記 - 根據定義HTML5不是嚴格XML兼容。例如,它包含一行<meta name="viewport" content="width=device-width, initial-scale=1.0">,這將不會被XML解析器所接受。

所以,你可能想改變你如何查看下載的HTML標記。

此外,還有在代碼中的另一個問題 - 你已經得到適當的文字與client.DownloadString方法,不需要的,它變成byte[]然後回到string代碼如下兩行。

+0

如此,從來沒有我不能這樣做呢?有沒有辦法獲得頁面的html代碼? – MoHaMmAd

+0

你已經有了html代碼,你只是不能使用XML查看器來查看它 - 而是使用一個簡單的TextBox。 – Seany