public static OpenGraphResult ParseHtml(string content) { var result = new OpenGraphResult(); var document = new HtmlDocument(); document.LoadHtml(content); var allMeta = document.DocumentNode.SelectNodes("//meta"); var openGraphMetaTags = from meta in allMeta where (meta.Attributes.Contains("property") && meta.Attributes["property"].Value.StartsWith("og:")) || (meta.Attributes.Contains("name") && meta.Attributes["name"].Value.StartsWith("og:")) select meta; foreach (var metaTag in openGraphMetaTags) { var value = GetOpenGraphValue(metaTag); var property = GetOpenGraphKey(metaTag); if (string.IsNullOrWhiteSpace(value)) continue; result.Add(property, value); } result.PageData = new PageData(); result.PageData.Title = document.DocumentNode.SelectSingleNode("//head/title").InnerText; return result; }