1

在过去的 2 个月里,我一直在 Web 爬虫应用程序中使用 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 却没有运气。我不知道这个网页可能是什么问题。

4

1 回答 1

11

该网站似乎需要启用 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);
于 2012-11-16T11:44:08.310 回答