Impossibile scaricare i dati HTML dall'URL di https utilizzando htmlagilitypack

c# html html-agility-pack https web-scraping

Domanda

Ho un problema "piccolo" htmlagilitypack (HAP). Quando ho cercato di ottenere dati da un sito web ottengo questo errore:

Si è verificata un'eccezione non gestita di tipo "System.ArgumentException" in mscorlib.dll

Ulteriori informazioni: "gzip" non è un nome di codifica supportato. Per informazioni sulla definizione di una codifica personalizzata, consultare la documentazione per il metodo Encoding.RegisterProvider.

Sto usando questo pezzo di codice per ottenere i dati dal sito web:

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

Dopo questo codice ottengo quell'errore. Ho provato di tutto dal google ma nulla ha aiutato.

Qualcuno può dirmi come risolvere questo problema?

Grazie

Risposta accettata

HtmlWeb non supporta il download da https. Quindi, invece, puoi utilizzare WebClient con un po 'di modifica per decomprimere automaticamente 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;
    }
}

Quindi utilizzare HtmlDocument.LoadHtml() per popolare l'istanza HtmlDocument dalla stringa HTML:

var url = "https://kat.cr/";
var data = new MyWebClient().DownloadString(url);
var doc = new HtmlDocument();
doc.LoadHtml(data);

Risposta popolare

È possibile intercettare la richiesta quando si utilizza HtmlWeb per modificarlo in base alle proprie esigenze.

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


Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché