HtmlAgilityPack HtmlWeb.Load返回空文档

时间:2012-11-15 15:17:35

标签: c# html web-crawler 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而没有运气。我不知道这个网页有什么问题。

1 个答案:

答案 0 :(得分:10)

这个网站似乎要求启用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);