我正在使用 asp.net Webmatrix-Razor。我也在使用 HTMLAgilityPack。我正在解析元标签以从网站抓取 Facebook 元标签以发布到我的网站。该代码适用于所有网站,除非我尝试从《赫芬顿邮报》获取一篇新闻文章。我得到“System.NullReferenceException:对象引用未设置为对象的实例。” 错误发生在 select new 的行。该网站确实有 Facebook 元标签。我听说有这个元标记可能会导致不确定的问题。
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" >
这是代码;
var webGet = new HtmlWeb();
var document = webGet.Load(Request.Form["news_URL"]);
var metaTags = document.DocumentNode.SelectNodes(".//meta");
if (metaTags != null){
var metaOnPage = from lnks in document.DocumentNode.Descendants()
where lnks.Name == "meta" &&
lnks.Attributes["property"] != null
//lnks.InnerText.Trim().Length > 0
select new
{
metaName = lnks.Attributes["property"].Value,
metaContent = lnks.Attributes["content"].Value
};
var Title = "";
var URL = "";
var imgSRC = "";
var Description = "";
foreach(var i in metaOnPage){
if(i.metaName == "og:title"){
Title = i.metaContent;
}else if(i.metaName == "og:url"){
URL = i.metaContent;
}else if(i.metaName == "og:image"){
imgSRC = i.metaContent;
}else if(i.metaName == "og:description"){
Description = i.metaContent;
}
}