C# HtmlAgilityPack HtmlWeb.Load返回空文档

C# HtmlAgilityPack HtmlWeb.Load返回空文档,c#,html,web-crawler,html-agility-pack,C#,Html,Web Crawler,Html Agility Pack,在过去的两个月里,我一直在一个网络爬虫应用程序中使用HtmlAgilityPack,加载网页时没有任何问题 现在,当我尝试加载此特定网页的文档时,文档OuterHtml为空,因此此测试失败 var url = "http://www.prettygreen.com/"; var htmlWeb = new HtmlWeb(); var htmlDoc = htmlWeb.Load(url); var outerHtml = htmlDoc.DocumentNode.OuterHtml; Asse

在过去的两个月里,我一直在一个网络爬虫应用程序中使用HtmlAgilityPack,加载网页时没有任何问题

现在,当我尝试加载此特定网页的文档时,文档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时运气不佳。我不知道这个网页有什么问题。

这个网站似乎需要启用cookies。因此,为web请求创建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);

似乎此网站需要启用Cookie。因此,为web请求创建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);

尝试将URL字符串更改为:-@“http:\\www.prettygreen.com\”;运气不好,System.UriFormatException:无效的URI:无法解析主机名。请尝试将URL字符串更改为:-@“http:\\www.prettygreen.com\”;运气不好,System.UriFormatException:无效的URI:无法解析主机名。您如何添加以前的
HttpWebRequest
中已有的cookie?@MicroR:不是100%确定,但是cookie应该在
htmlWeb
实例中可用。您如何添加您已经从以前的
HttpWebRequest
中获得的cookie?@MicroR:不是100%确定,但是cookie应该在
htmlWeb
实例中可用