Maison > développement back-end > Tutoriel C#.Net > Exemple d'utilisation de C# pour obtenir le code source HTML d'une page web

Exemple d'utilisation de C# pour obtenir le code source HTML d'une page web

高洛峰
Libérer: 2017-01-14 13:29:51
original
2198 Les gens l'ont consulté

Je travaille récemment sur un projet et l'une des fonctions consiste à obtenir le code source d'une page Web en fonction d'une adresse URL. Dans ASP.NET (C#), il semble exister de nombreuses façons d'obtenir le code source d'une page Web. Je viens de créer un simple WebClient, très simple et facile. Mais un problème très ennuyeux est apparu plus tard, à savoir les caractères chinois tronqués.

Après une étude minutieuse, les pages Web chinoises ne sont rien de plus que deux encodages : GB2312 et UTF-8. Nous avons donc le code suivant :

       /// <summary>
       /// 根据网址的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;
               }
           }
       }
Copier après la connexion

Pour expliquer un peu, WebClient est utilisé ici pour créer un objet wc (cette dénomination est un peu délicate). Appelez ensuite la méthode DownloadData de l'objet wc, transmettez la valeur URL et renvoyez un tableau d'octets. Par défaut, GB2312 est utilisé pour lire ce tableau d'octets et le convertir en chaîne. Recherchez les caractères caractéristiques du format de codage de la page Web à partir de la chaîne du code source de la page Web, par exemple en recherchant des informations telles que charset="utf-8", pour déterminer le format de codage de la page Web actuelle.

La fonction GetCharset permet d'obtenir le format d'encodage de la page web courante. Le code spécifique est le suivant :

      /// <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;
       }
Copier après la connexion


Pour plus d'articles connexes sur des exemples d'utilisation de C# pour obtenir le code source HTML des pages Web, veuillez faire attention au site Web PHP chinois !


Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal