[英]C# HTMLAgilityPack returns a 404 error page unexpectedly
我正在使用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主頁no pouvons trouver cette page web erreur 404 nous sommesdésolésque vous ayez abouti ici il到達parfois qu'une page aitétédéplacéeousupprimée heureusement nous pouvons vous aideràtrouver ce que vous cherchez retournezàla grc en cb d'accueil / ** /
看起來這可能是該特定站點的錯誤頁面: http : //bc.rcmp-grc.gc.ca/error.jsp
以下代碼對我有用,並且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;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.