1. 程式人生 > >HtmlAgilityPack HtmlWeb.Load() 不支援 gzip 的解決方法

HtmlAgilityPack HtmlWeb.Load() 不支援 gzip 的解決方法

這幾天想做用現在比較流行的為雨澤漫畫重寫下采集的功能,看了一些 的介紹,感覺非常好用,還內建了htmlWeb用來http請求。但是發現有的開啟了gzip壓縮的網頁請求時會報錯。

原來的程式碼如下:

1 HtmlWeb webClient = new HtmlWeb();
2 HtmlDocument doc = webClient.Load(this.getUrl());

報錯資訊為gzip”不是受支援的編碼名。

在谷歌上搜索了半天,終於找到解決方案,而且不必更換HttpRequest或WebClient進行請求。同時還可以用此方法設定cookie,render偽裝等等。。。
解決後代碼如下:

1 HtmlWeb webClient = new HtmlWeb();
2 HtmlAgilityPack.HtmlWeb.PreRequestHandler handler = delegate(HttpWebRequest request)
3 {
4 request.Headers[HttpRequestHeader.AcceptEncoding] = "gzip, deflate";
5 request.AutomaticDecompression = DecompressionMethods.Deflate | DecompressionMethods.GZip;
6 request.CookieContainer = new System.Net.CookieContainer();
7 return true;
8 };
9 webClient.PreRequest += handler;
10 HtmlDocument doc = webClient.Load(this.getUrl());