首页 > 代码库 > 关于HtmlAgilityPack解析页面中数据乱码问题

关于HtmlAgilityPack解析页面中数据乱码问题

第一种方式:
     public static HtmlDocument LoadHtmlByUrls(string url)
        {
            HtmlDocument htmldoc;
            HtmlWeb htmlWeb = new HtmlWeb();  //不够完善  此内置方法导致中文乱码
            //htmlWeb.OverrideEncoding = Encoding.UTF8;
            htmldoc = htmlWeb.Load(url);
            Encoding coding = htmldoc.StreamEncoding;
                        
                        htmlWeb.OverrideEncoding = coding;
                        htmldoc = htmlWeb.Load(url);
                      string str = htmldoc.DocumentNode.InnerHtml;
            return htmldoc;
        }
上面的方法解析大部分是没有问题的,但是会经常碰到解析乱码的问题,那是因为htmlweb调用的是ie访问。可能是它的不完善导致了访问数据出现乱码现象,我们可以用第二种自己定义请求访问数据的方式来解析url的数据。
第二种方式:
       /// <summary>
        /// 取得 url 对应的 HtmlDocument 
        /// </summary>
        /// <param name="url"></param>
        /// <returns>中文不乱码(如果出了问题请用将上面的方法名改成当前方法名即可)</returns>
        public static HtmlDocument LoadHtmlByUrl(string url)
        {
            HtmlDocument htmldoc = new HtmlDocument();
            HttpWebRequest req;
            req = WebRequest.Create(new Uri(url)) as HttpWebRequest;
            req.Method = "GET";
            WebResponse rs = req.GetResponse();
            Stream rss = rs.GetResponseStream();
            htmldoc.Load(rss);
            string str = htmldoc.DocumentNode.InnerHtml;
            return htmldoc;
        }
以上两种方式或许不是最好的方法,但是也算是一种经验。


来自为知笔记(Wiz)