欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

使用C#獲取網(wǎng)頁HTML源碼的例子

 更新時間:2014年08月13日 10:07:12   投稿:junjie  
這篇文章主要介紹了使用C#獲取網(wǎng)頁HTML源碼的例子,考慮了區(qū)分GB2312和UTF-8編碼,需要的朋友可以參考下

最近在做一個項目,其中一個功能是根據(jù)一個URL地址,獲取到網(wǎng)頁的源代碼。在ASP.NET(C#)中,獲取網(wǎng)頁源代碼貌似有很多種方法,我隨便搞了一個簡單的WebClient,非常簡單容易。但后面一個非常惱火的問題出來了,那就是中文的亂碼。

通過仔細研究,中文的網(wǎng)頁不外乎GB2312和UTF-8這兩種編碼。于是有了下面這段代碼:

復制代碼 代碼如下:

       /// <summary>
       /// 根據(jù)網(wǎng)址的URL,獲取源代碼HTML
       /// </summary>
       /// <param name="url"></param>
       /// <returns></returns>
       public static string GetHtmlByUrl(string url)
       {
           using (WebClient wc = new WebClient())
           {
               try
               {
                   wc.UseDefaultCredentials = true;
                   wc.Proxy = new WebProxy();
                   wc.Proxy.Credentials = CredentialCache.DefaultCredentials;
                   wc.Credentials = System.Net.CredentialCache.DefaultCredentials;
                   byte[] bt = wc.DownloadData(url);
                   string txt = System.Text.Encoding.GetEncoding("GB2312").GetString(bt);
                   switch (GetCharset(txt).ToUpper())
                   {
                       case "UTF-8":
                           txt = System.Text.Encoding.UTF8.GetString(bt);
                           break;
                       case "UNICODE":
                           txt = System.Text.Encoding.Unicode.GetString(bt);
                           break;
                       default:
                           break;
                   }
                   return txt;
               }
               catch (Exception ex)
               {
                   return null;
               }
           }
       }

稍微解釋一下,這里使用了WebClient創(chuàng)建了一個wc對象(這命名有點尷尬了)。然后調(diào)用wc對象的DownloadData方法,傳入URL值,返回一個字節(jié)數(shù)組。默認使用GB2312來讀取這個字節(jié)數(shù)組,把它轉(zhuǎn)換成字符串。從網(wǎng)頁源代碼的字符串中查找網(wǎng)頁的編碼格式的特征字符,如找到charset="utf-8"這樣的信息,來判斷當前網(wǎng)頁的編碼格式。

GetCharset這個函數(shù)就是來獲取當前網(wǎng)頁的編碼格式的,具體代碼如下:

復制代碼 代碼如下:
      /// <summary>
       /// 從HTML中獲取獲取charset
       /// </summary>
       /// <param name="html"></param>
       /// <returns></returns>
       public static string GetCharset(string html)
       {
           string charset = "";
           Regex regCharset = new Regex(@"content=[""'].*\s*charset\b\s*=\s*""?(?<charset>[^""']*)", RegexOptions.IgnoreCase);
           if (regCharset.IsMatch(html))
           {
               charset = regCharset.Match(html).Groups["charset"].Value;
           }
           if (charset.Equals(""))
           {
               regCharset = new Regex(@"<\s*meta\s*charset\s*=\s*[""']?(?<charset>[^""']*)", RegexOptions.IgnoreCase);
               if (regCharset.IsMatch(html))
               {
                   charset = regCharset.Match(html).Groups["charset"].Value;
               }
           }
           return charset;
       }

感覺寫得不是很好,先將就著用,呵呵。小編原創(chuàng),轉(zhuǎn)載注明,呵呵。

相關(guān)文章

  • C#使用Socket實現(xiàn)本地多人聊天室

    C#使用Socket實現(xiàn)本地多人聊天室

    這篇文章主要為大家詳細介紹了C#使用Socket實現(xiàn)本地多人聊天室,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • C#使用ICSharpCode.SharpZipLib.dll進行文件的壓縮與解壓功能

    C#使用ICSharpCode.SharpZipLib.dll進行文件的壓縮與解壓功能

    這篇文章主要介紹了C#使用ICSharpCode.SharpZipLib.dll進行文件的壓縮與解壓功能,需要的朋友可以參考下
    2017-12-12
  • C#中改變DataGridView控件邊框顏色的方法

    C#中改變DataGridView控件邊框顏色的方法

    這篇文章主要介紹了C#中改變DataGridView控件邊框顏色的方法,默認的DataGridView邊框顏色很丑,本文用編程方法實現(xiàn)修改DataGridView邊框顏色,需要的朋友可以參考下
    2014-08-08
  • C#實現(xiàn)的SN快速輸入工具實例

    C#實現(xiàn)的SN快速輸入工具實例

    這篇文章主要介紹了C#實現(xiàn)的SN快速輸入工具,以實例的形式詳細講述了C#實現(xiàn)序列號快速輸入的方法,是非常實用的技巧,需要的朋友可以參考下
    2014-11-11
  • C#實現(xiàn)將商品金額小寫轉(zhuǎn)換成大寫的方法

    C#實現(xiàn)將商品金額小寫轉(zhuǎn)換成大寫的方法

    這篇文章主要介紹了C#實現(xiàn)將商品金額小寫轉(zhuǎn)換成大寫的方法,涉及C#數(shù)組與字符串的相關(guān)操作技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2016-08-08
  • DevExpress的DateEdit設(shè)置顯示日期和時間的方法

    DevExpress的DateEdit設(shè)置顯示日期和時間的方法

    本文主要介紹了DevExpress的DateEdit設(shè)置顯示日期和時間的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-08-08
  • C#接口在派生類和外部類中的調(diào)用方法示例

    C#接口在派生類和外部類中的調(diào)用方法示例

    這篇文章主要介紹了C#接口在派生類和外部類中的調(diào)用方法,結(jié)合實例形式分析了C#接口的定義與具體使用方法,需要的朋友可以參考下
    2017-02-02
  • C#中的Linq to Xml詳解

    C#中的Linq to Xml詳解

    這篇文章主要介紹了C#中的Linq to Xml詳解,本文給出轉(zhuǎn)換步驟以及大量實例,講解了生成xml、查詢并修改xml、監(jiān)聽xml事件、處理xml流等內(nèi)容,需要的朋友可以參考下
    2015-01-01
  • C#實現(xiàn)PDF簽名時添加時間戳的2種方法(附VB.NET代碼)

    C#實現(xiàn)PDF簽名時添加時間戳的2種方法(附VB.NET代碼)

    在PDF添加簽名時,支持添加可信時間戳來保證文檔的法律效應。本文,將通過C#程序代碼介紹如何添加可信時間戳,可通過2種方法來實現(xiàn)。感興趣的可以了解一下
    2021-05-05
  • 談C# using的用法與好處

    談C# using的用法與好處

    這篇文章主要為大家詳細介紹了C# using的用法與好處,具體分析了using指令調(diào)用的Dispose()方法,感興趣的朋友可以參考一下
    2016-05-05

最新評論