我有一个"小"问题htmlagilitypack(HAP)。当我尝试从网站获取数据时,我收到此错误:
未处理的类型' System.ArgumentException'发生在 mscorlib.dll中
其他信息:' gzip'不是受支持的编码名称。有关定义自定义编码的信息,请参阅文档 对于Encoding.RegisterProvider方法。
我使用这段代码从网站上获取数据:
HtmlWeb page = new HtmlWeb();
var url = "https://kat.cr/";
var data = page.Load(url);
在这段代码之后我得到了这个错误。我尝试了谷歌的一切,但没有任何帮助。
有人可以告诉我如何解决这个问题吗?
谢谢
答案 0 :(得分:11)
使用HtmlWeb
根据您的要求修改请求时,您可以拦截请求。
var page = new HtmlWeb()
{
PreRequest = request =>
{
// Make any changes to the request object that will be used.
request.AutomaticDecompression = DecompressionMethods.Deflate | DecompressionMethods.GZip;
return true;
}
};
var url = "https://kat.cr/";
var data = page.Load(url);
答案 1 :(得分:8)
HtmlWeb
不支持从https下载。因此,您可以使用WebClient
与a bit of modification自动解压缩GZip
:
class MyWebClient : WebClient
{
protected override WebRequest GetWebRequest(Uri address)
{
HttpWebRequest request = base.GetWebRequest(address) as HttpWebRequest;
request.AutomaticDecompression = DecompressionMethods.Deflate | DecompressionMethods.GZip;
return request;
}
}
然后使用HtmlDocument.LoadHtml()
从HTML字符串中填充HtmlDocument
实例:
var url = "https://kat.cr/";
var data = new MyWebClient().DownloadString(url);
var doc = new HtmlDocument();
doc.LoadHtml(data);