Я использую HtmlAgilityPack для получения мета и описаний страницы. Поиск кода работает для простых веб-сайтов, таких как Tumblr., Twitter, Stack Overflow.Обновить страницу | facebook; показанный HtmlAgilityPack
Но когда я пытаюсь загрузить основные сайты, такие как Google, он показывает мне только название как Google и без описания. Similary для Facebook он не показывает мне описания, но для названия, которое показывает мне. Обновите свой браузер | Facebook.
Я новичок в этом пакете, я загрузил последнюю версию этого пакета из пакета NuGet в MS WebMatrix. Код, который я использую, равен:
@using HtmlAgilityPack;
@{
Layout = "~/_SiteLayout.cshtml";
var Title = "";
var Description = "";
using(var client = new WebClient()){
var html = client.DownloadString("http://www.facebook.com");
var doc = new HtmlDocument();
doc.LoadHtml(html);
var title = doc.DocumentNode.Descendants("title").FirstOrDefault();
if(title != null){
Title = title.InnerText;
}
var description = doc.DocumentNode.Descendants("meta")
.Where(n => n.GetAttributeValue("name", String.Empty)
.Contains("description")).FirstOrDefault();
if(description != null){
Description = description.GetAttributeValue("content", string.Empty);
}
}
}
Эта проблема по имени выглядит как старая проблема с браузером. Как это исправить?
Возможно, вы захотите отправить строку User Agent, а не по умолчанию, которую передает платформа .NET ... См. Http://stackoverflow.com/a/11841680/736079. Что касается описания, отправленный HTML по facebook и google не содержит тега мета-описания, поэтому найти нечего. – jessehouwing
О, это хорошая и новая информация для меня! :) Итак, что делают другие сайты? Скажем, Facebook. Они также используют описание Google. Как они его получают? Или они сами пишут? –
Facebook, похоже, отправляет тег метаописания только тогда, когда вы не вошли в систему ... Когда вы исправляете строку UserAgent, они могут отправить вам ее. – jessehouwing