HtmlAgilityPack中的NullReferenceException

c# html-agility-pack

我試圖從下面提到的URL使用xpath提取link

string url = "http://www.album-cover-art.org/search.php?q=Ruin+-+Live+Album+Version+Lamb+of+God"

我的代碼:

string url = "http://www.album-cover-art.org/search.php?q=Ruin+-+Live+Album+Version+Lamb+of+God"

上面的代碼編譯得很好,但是當我嘗試運行它時會產生異常

string url = "http://www.album-cover-art.org/search.php?q=Ruin+-+Live+Album+Version+Lamb+of+God"

完成堆棧跟踪

string url = "http://www.album-cover-art.org/search.php?q=Ruin+-+Live+Album+Version+Lamb+of+God"

所以,我的問題是為什麼我得到這個例外。

一般承認的答案

這是HtmlAgilityPack中的一個錯誤。您嘗試解析的文檔有<meta http-equiv="Content-Type" content="text/html; charset=iso-utf-8">其中charset值( iso-utf-8 )不能被AgilityPack解析為有效的編碼名稱。正如Simon Mourier 所說這是1.4.0.0中引入的錯誤

要避免這種情況,請從流中手動加載文檔並手動設置編碼,如下所示:

var htmlDoc = new HtmlDocument();
htmlDoc.OptionReadEncoding = false;
var request = (HttpWebRequest)WebRequest.Create(url);
request.Method = "GET";
using (var response = (HttpWebResponse)request.GetResponse())
{
    using (var stream = response.GetResponseStream())
    {
        htmlDoc.Load(stream, Encoding.UTF8);
    }
}



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