第一种方式:
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;
}
以上两种方式或许不是最好的方法,但是也算是一种经验。
关于HtmlAgilityPack解析页面中数据乱码问题