Не удается загрузить HTML-данные из HTTPS URL с помощью htmlagilitypack

У меня есть "маленькая" проблема htmlagilitypack (HAP). Когда я пытался получить данные с веб-сайта, я получаю эту ошибку:

необработанное исключение типа System.ArgumentException в библиотеку mscorlib.dll файлы

дополнительная информация:' gzip ' не является поддерживаемым именем кодировки. Сведения об определении пользовательской кодировки см. В документации для кодировки.Способ файл registerprovider.

Я использую этот фрагмент кода, чтобы получить данные с сайта:

HtmlWeb page = new HtmlWeb();
var url = "https://kat.cr/";
var data = page.Load(url);

после выполнения этого кода я получаю эту ошибку. Я пробовал все из google, но ничего не помогло.

может кто-нибудь сказать мне, как решить эту проблему ?

спасибо

2 ответов


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() добавить HtmlDocument экземпляр из строки HTML:

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);