利用HtmlAgilityPack抓取頁面很方便,但是當頁面是gb2312編碼時候就會出現亂碼,上網查了一下說是默認的獲取頁面方法不夠成熟,具體什麼的我也不知道,姑且就認為是不夠成熟吧。
HtmlWeb htmlWeb = new HtmlWeb(); HtmlDocument htmlDocument = htmlWeb.Load(@url);
解決方法如下:
新建一個方法來獲取 HtmlDocument,傳進來的是抓取頁面的地址
private static HtmlDocument GetHtmlDocument(string url) { HttpWebRequest httpWebRequest = WebRequest.Create(new Uri(@url)) as HttpWebRequest; httpWebRequest.Method = "GET"; WebResponse webResponse = httpWebRequest.GetResponse(); Stream stream = webResponse.GetResponseStream(); HtmlDocument htmlDocument = new HtmlDocument(); htmlDocument.Load(stream); return htmlDocument; }
根據@無機の劍 的評論,用這個屬性就解決了(O(∩_∩)O~):
HtmlWeb htmlWeb = new HtmlWeb(); htmlWeb.OverrideEncoding = Encoding.GetEncoding("gb2312");
這樣就可以啦!至於後面的使用方法都一樣,具體可以參考這個博客,講的很詳細哈 http://www.cnblogs.com/linfei721/archive/2013/05/08/3066697.html