NullReferenceException dans HtmlAgilityPack

c# html-agility-pack

Question

J'essaie d'extraire un link utilisant xpath partir de l'URL mentionnée ci-dessous

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

Mon code:

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

Le code ci-dessus compile bien mais lorsque j'essaie de l'exécuter, il génère une exception.

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

Pile complète

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

Donc, ma question est pourquoi je reçois cette exception.

Réponse acceptée

C'est un bug dans HtmlAgilityPack. Le document que vous essayez d'analyser a <meta http-equiv="Content-Type" content="text/html; charset=iso-utf-8"> où la valeur charset ( iso-utf-8 ) n'a pas pu être analysé comme un nom de codage valide par AgilityPack. Comme Simon Mourier l’a dit , il s’agit d’un bogue introduit dans la version 1.4.0.0 .

Pour éviter cela, chargez manuellement votre document à partir d'un flux et définissez l'encodage manuellement comme suit:

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);
    }
}



Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi