首页 > 代码库 > 关于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)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。