我正在使用HTML Agility Pack来解析网页,直到最近它一直运行良好。现在,当我尝试加载页面而不是完整的HTML响应时,我得到了404错误页面。
以下是具有以下行为的URL的示例:http://bc.rcmp-grc.gc.ca/ViewPage.action?siteNodeId=2087&languageId=1&contentId=57000
这是代码:
public string Body(string uri)
{
var web = new HtmlWeb();
web.UseCookies = true;
var doc = web.Load(uri);
if ((doc.ParseErrors.Count() > 0) || (web.StatusCode != HttpStatusCode.OK))
{
return string.Empty;
}
else
{
return doc.DocumentNode
.SelectNodes("//body")
.First()
.InnerHtml;
}
}
这是我得到的输出: 正文:我们找不到该网页错误404 /麻烦您的故障排除cette page Web erreur 404我们找不到该网页错误404我们很抱歉您最终在这里有时删除了页面,但希望我们能为您提供帮助您会找到要查找的内容返回bc rcmp主页故障排除故障排除页面Web erreur 404 nous sommesdésolésque vous ayez abouti ici il parfois qu'une page aitétédéplacéeousuppriméeheureusement nous pouvons que vous cherchez retournezàla grc en cb page d'accueil / ** /
该特定网站可能是错误页面:http://bc.rcmp-grc.gc.ca/error.jsp
答案 0 :(得分:0)
以下代码对我有用,并且bodyInnerHtml正确分配了body的InnerHtml:
string uri = "http://bc.rcmp-grc.gc.ca/ViewPage.action?siteNodeId=2087&languageId=1&contentId=57000";
var web = new HtmlWeb();
web.UseCookies = true;
var doc = web.Load(uri);
IEnumerable<HtmlParseError> d = doc.ParseErrors; // 6 errors, but so what
if ( (web.StatusCode != HttpStatusCode.OK))
{
// return string.Empty;
}
else
{
// works for me:
var bodyInnerhtml = doc.DocumentNode.SelectNodes("//body")[0].InnerHtml;
}