HtmlAgilityPack HtmlWeb.Load retournant un document vide

c# html html-agility-pack web-crawler

Question

J'utilise HtmlAgilityPack depuis 2 mois dans une application Web Crawler sans aucun problème pour charger une page Web.

Maintenant, lorsque j'essaie de charger une page Web particulière, le document OuterHtml est vide et le test échoue.

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

Je peux charger une autre page du site sans problèmes, tels que la configuration

url = "http://www.prettygreen.com/news/";

Dans le passé, j’avais un problème d’encodage, j’ai joué avec htmlWeb.OverrideEncoding et htmlWeb.AutoDetectEncoding sans succès. Je n'ai aucune idée de ce qui pourrait être le problème ici avec cette page Web.

Réponse acceptée

Il semble que ce site nécessite l'activation des cookies. La création d'un conteneur de cookies pour votre demande Web devrait donc résoudre le problème:

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


Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi