HtmlAgilityPack HtmlWeb.Load возвращает пустой документ

c# html html-agility-pack web-crawler

Вопрос

Я использую HtmlAgilityPack последние 2 месяца в приложении веб-сканера, без проблем загружая веб-страницу.

Теперь, когда я пытаюсь загрузить эту конкретную веб-страницу, документ OuterHtml пуст, поэтому этот тест не выполняется

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

Я могу загрузить другую страницу с сайта без каких-либо проблем, таких как настройка

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

Раньше у меня когда-то была проблема с кодировками, я играл с htmlWeb.OverrideEncoding и htmlWeb.AutoDetectEncoding без везения. Я понятия не имею, что может быть проблемой здесь с этой веб-страницей.

Принятый ответ

Кажется, что для этого веб-сайта требуется, чтобы файлы cookie были включены. Поэтому создание контейнера cookie для вашего веб-запроса должно решить проблему:

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


Related

Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему
Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему