htmlagilitypack (HAP)에 "작은"문제점이 있습니다. 웹 사이트에서 데이터를 가져 오려고하면이 오류가 발생합니다.
처리되지 않은 'System.ArgumentException'형식의 예외가 mscorlib.dll에서 발생했습니다.
추가 정보 : 'gzip'은 지원되는 인코딩 이름이 아닙니다. 사용자 지정 인코딩 정의에 대한 자세한 내용은 Encoding.RegisterProvider 메서드에 대한 설명서를 참조하십시오.
이 코드를 사용하여 웹 사이트에서 데이터를 가져옵니다.
HtmlWeb page = new HtmlWeb();
var url = "https://kat.cr/";
var data = page.Load(url);
이 코드 후에 나는 그 오류가 발생합니다. 나는 구글에서 모든 것을 시도했지만 아무 도움도받지 못했다.
누군가이 문제를 해결하는 방법을 말해 줄 수 있습니까?
고맙습니다
HtmlWeb
은 https에서 다운로드를 지원하지 않습니다. 따라서 대신 WebClient
를 약간 수정 하여 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);
요청에 따라 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);