HtmlAgilityPack HtmlWeb.Load() 不支援 gzip 的解決方法
阿新 • • 發佈:2019-01-11
這幾天想做用現在比較流行的為雨澤漫畫重寫下采集的功能,看了一些 的介紹,感覺非常好用,還內建了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()); |