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

时间:2018-10-31 20:17:34

标签: c# html web-scraping html-agility-pack

我正在使用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

1 个答案:

答案 0 :(得分:0)

  • 确定要使用最新版本的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;                            
            }

结果: enter image description here