• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C#教程 > 使用C#获取网页HTML源码的例子

使用C#获取网页HTML源码的例子

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-28

通过本文主要向大家介绍了c#后台获取html控件,c#过滤html标签,c#编辑html5,c#解析html,c#读取html文件内容等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

最近在做一个项目,其中一个功能是根据一个URL地址,获取到网页的源代码。在ASP.NET(C#)中,获取网页源代码貌似有很多种方法,我随便搞了一个简单的WebClient,非常简单容易。但后面一个非常恼火的问题出来了,那就是中文的乱码。

通过仔细研究,中文的网页不外乎GB2312和UTF-8这两种编码。于是有了下面这段代码:
       /// <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;
               }
           }
       }
</div>
稍微解释一下,这里使用了WebClient创建了一个wc对象(这命名有点尴尬了)。然后调用wc对象的DownloadData方法,传入URL值,返回一个字节数组。默认使用GB2312来读取这个字节数组,把它转换成字符串。从网页源代码的字符串中查找网页的编码格式的特征字符,如找到charset="utf-8"这样的信息,来判断当前网页的编码格式。

GetCharset这个函数就是来获取当前网页的编码格式的,具体代码如下:
       /// 从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;
       }
</div>
感觉写得不是很好,先将就着用,呵呵。小编原创,转载注明,呵呵。

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • C#后台创建控件并获取值的方法
  • C#获取网页HTML源码实例
  • C#实现下载网页HTML源码的方法
  • C#实现压缩HTML代码的方法
  • C#实现过滤html标签并保留a标签的方法
  • 使用C#获取网页HTML源码的例子
  • C#下解析HTML的两种方法介绍
  • 提取HTML代码中文字的C#函数

相关文章

  • 2017-05-28C#实现的简单验证码识别实例
  • 2017-05-28C#中实现判断某个类是否实现了某个接口
  • 2017-05-28c#继承与多态使用示例
  • 2017-05-28C#中使用Split方法拆分字符串实例
  • 2017-05-28C#中数组、ArrayList和List三者的区别详解
  • 2017-05-28浅解关于C#多线程的介绍
  • 2017-05-28C#中委托的进一步理解
  • 2017-05-28C#泛型用法实例分析
  • 2017-05-28C#网络适配器简单操作
  • 2017-05-28C#实现按数据库邮件列表发送邮件的方法

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • C#中哈希表(Hashtable)的介绍及简单用法
    • C#使用SqlBulkCopy批量复制数据到数据表
    • C#使用DllImport调用非托管的代码的方法
    • C#几种获取网页源文件代码的实例
    • 简单实现C#窗体程序判断是否闰年
    • C#判断页面中的多个文本框输入值是否有重复的实现方法
    • C#编程实现QQ界面的方法
    • C#中前台线程和后台线程的区别与联系
    • C#语言中的修饰符汇总
    • C#中在WebClient中使用post发送数据实现方法

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有