C# HtmlAgilityPack HtmlWeb.Load返回空文档
在过去的两个月里,我一直在一个网络爬虫应用程序中使用HtmlAgilityPack,加载网页时没有任何问题 现在,当我尝试加载此特定网页的文档时,文档OuterHtml为空,因此此测试失败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
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
实例中可用