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

Jan 14, 2017 pm 01:29 PM

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 !


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

Article chaud

Repo: Comment relancer ses coéquipiers
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD
R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Article chaud

Repo: Comment relancer ses coéquipiers
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD
R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Tags d'article chaud

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment ajouter le compilateur C de niveau suivant Comment ajouter le compilateur C de niveau suivant Mar 03, 2025 pm 05:44 PM

Comment ajouter le compilateur C de niveau suivant

Quelles sont les alternatives à Null en C Quelles sont les alternatives à Null en C Mar 03, 2025 pm 05:37 PM

Quelles sont les alternatives à Null en C

Méthode de copie du code par compilateur de langage C Méthode de copie du code par compilateur de langage C Mar 03, 2025 pm 05:43 PM

Méthode de copie du code par compilateur de langage C

Quel compilateur de langue C est le meilleur? Quel compilateur de langue C est le meilleur? Mar 03, 2025 pm 05:39 PM

Quel compilateur de langue C est le meilleur?

Quelles sont les versions Web des compilateurs de langage C? Quelles sont les versions Web des compilateurs de langage C? Mar 03, 2025 pm 05:42 PM

Quelles sont les versions Web des compilateurs de langage C?

Null est-il toujours important dans la programmation moderne dans le langage C? Null est-il toujours important dans la programmation moderne dans le langage C? Mar 03, 2025 pm 05:35 PM

Null est-il toujours important dans la programmation moderne dans le langage C?

CLANGE COMMANDE COMMANDE C compilateur de langage C Résumé du site Web officiel CLANGE COMMANDE COMMANDE C compilateur de langage C Résumé du site Web officiel Mar 03, 2025 pm 05:41 PM

CLANGE COMMANDE COMMANDE C compilateur de langage C Résumé du site Web officiel

T Tutoriel d'installation du compilateur de langue C (version informatique) T Tutoriel d'installation du compilateur de langue C (version informatique) Mar 03, 2025 pm 05:41 PM

T Tutoriel d'installation du compilateur de langue C (version informatique)

See all articles