HtmlAgilityPack HtmlWeb.Load restituisce un documento vuoto

c# html html-agility-pack web-crawler

Domanda

Ho utilizzato HtmlAgilityPack negli ultimi 2 mesi in un'applicazione Web Crawler senza problemi durante il caricamento di una pagina web.

Ora quando provo a caricare una pagina Web specifica, il documento OuterHtml è vuoto, quindi questo test fallisce

var url = "http://www.prettygreen.com/";
var htmlWeb = new HtmlWeb();
var htmlDoc = htmlWeb.Load(url);
var outerHtml = htmlDoc.DocumentNode.OuterHtml;
Assert.AreNotEqual("", pageHtml);

Posso caricare un'altra pagina dal sito senza problemi, come l'impostazione

var url = "http://www.prettygreen.com/";
var htmlWeb = new HtmlWeb();
var htmlDoc = htmlWeb.Load(url);
var outerHtml = htmlDoc.DocumentNode.OuterHtml;
Assert.AreNotEqual("", pageHtml);

In passato ho avuto un problema con le codifiche, ho giocato con htmlWeb.OverrideEncoding e htmlWeb.AutoDetectEncoding senza fortuna. Non ho idea di quale potrebbe essere il problema qui con questa pagina web.

Risposta accettata

Sembra che questo sito Web richiede che i cookie siano abilitati. Pertanto, la creazione di un contenitore di cookie per la tua richiesta web dovrebbe risolvere il problema:

var url = "http://www.prettygreen.com/";
var htmlWeb = new HtmlWeb();
htmlWeb.PreRequest += request =>
    {
        request.CookieContainer = new System.Net.CookieContainer();
        return true;
    };
var htmlDoc = htmlWeb.Load(url);
var outerHtml = htmlDoc.DocumentNode.OuterHtml;
Assert.AreNotEqual("", outerHtml);



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é