繁体   English   中英

C#HTMLAgilityPack意外返回404错误页面

[英]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

  • 您确定使用的是HtmlAgilityPack的最新版本吗?
  • 您是否可能经常调用该代码,以使您的IP地址被暂时列入黑名单?

以下代码对我有用,并且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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM