HtmlAgilityPack HtmlWeb.Load返回空文檔


我在Web Crawler應用程序中使用HtmlAgilityPack過去2個月沒有加載網頁的問題。

現在,當我嘗試加載此特定網頁時,文檔OuterHtml為空,因此此測試失敗

var url = "http://www.prettygreen.com/";
var htmlWeb = new HtmlWeb();
var htmlDoc = htmlWeb.Load(url);
var outerHtml = htmlDoc.DocumentNode.OuterHtml;
Assert.AreNotEqual("", pageHtml);

我可以從網站加載另一個頁面,沒有任何問題,例如設置

var url = "http://www.prettygreen.com/";
var htmlWeb = new HtmlWeb();
var htmlDoc = htmlWeb.Load(url);
var outerHtml = htmlDoc.DocumentNode.OuterHtml;
Assert.AreNotEqual("", pageHtml);

在過去我曾經遇到過編碼問題,我玩過htmlWeb.OverrideEncoding和htmlWeb.AutoDetectEncoding而沒有運氣。我不知道這個網頁有什麼問題。

一般承認的答案

看來這個網站需要啟用cookie。因此,為Web請求創建cookie容器應該可以解決問題:

var url = "http://www.prettygreen.com/";
var htmlWeb = new HtmlWeb();
htmlWeb.PreRequest += request =>
    {
        request.CookieContainer = new System.Net.CookieContainer();
        return true;
    };
var htmlDoc = htmlWeb.Load(url);
var outerHtml = htmlDoc.DocumentNode.OuterHtml;
Assert.AreNotEqual("", outerHtml);




許可下: CC-BY-SA
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因