HtmlAgilityPack HtmlWeb.Load() 不支持 gzip 的解决方法

这几天想做用现在比较流行的HtmlAgilityPack雨泽漫画重写下采集的功能,看了一些HtmlAgilityPack 的介绍,感觉非常好用,还内置了htmlWeb用来http请求。但是发现有的开启了gzip压缩的网页请求时会报错。

原来的代码如下:

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

报错信息为gzip”不是受支持的编码名。

在谷歌上搜索了半天,终于找到解决方案,而且不必更换HttpRequest或WebClient进行请求。同时还可以用此方法设置cookie,render伪装等等。。。
解决后代码如下:

1HtmlWeb webClient =new HtmlWeb();
2HtmlAgilityPack.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};
9webClient.PreRequest += handler;
10HtmlDocument doc = webClient.Load(this.getUrl());