簡體   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