您的位置:首页 > Web前端 > HTML

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

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

原来的代码如下:

1
HtmlWeb
webClient =
new

HtmlWeb();
2
HtmlDocument
doc = webClient.Load(
this
.getUrl());
报错信息为“gzip”不是受支持的编码名。

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

解决后代码如下:

view source

print?

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());
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: