过去 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 但没有成功。我不知道此网页可能存在什么问题。
最佳答案
该网站似乎需要启用 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);
关于c# - HtmlAgilityPack HtmlWeb.Load 返回空文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13400493/