Как извлечь заглавное изображение веб-страницы

Я хочу извлечь заглавное изображение веб-страницы с помощью С# в ASP.NET. Я проверил окна и объекты документа, но у них нет такого свойства, как заголовок. Итак, поиск метода для извлечения изображения заголовка, как на вкладке страницы Chrome.


person azam    schedule 24.08.2012    source источник
comment
Ваш вопрос не ясен. Вы пытаетесь получить это из консоли или приложения winforms, анализируя страницу aspx? Вы программируете приложение asp.net и просто хотите получить/установить заголовок программно? Если последнее, вы должны смотреть на Page.Title   -  person Icarus    schedule 24.08.2012
comment
Что вы имеете в виду под заглавным изображением? Вы имеете в виду фавикон?   -  person freefaller    schedule 24.08.2012
comment
HTML не имеет заглавного изображения. Что именно ты имеешь ввиду?   -  person Diodeus - James MacFarlane    schedule 24.08.2012
comment
Я думаю, он хочет фавикон   -  person M. Mennan Kara    schedule 24.08.2012
comment
Да, источник изображения, который хранится на вкладке Chrome, — это favicon.   -  person Brandon Poole    schedule 24.08.2012
comment
Попробуйте скачать http://{websiteaddress}/favicon.ico   -  person M. Mennan Kara    schedule 24.08.2012
comment
Да фавикон. Я хочу, чтобы изображение отображалось на вкладке хромированного окна. Как Facebook, Youtube и т. д.   -  person azam    schedule 24.08.2012
comment
Я использую asp.net для извлечения значка для использования на странице aspx.   -  person azam    schedule 24.08.2012
comment
Вы пытаетесь получить значок веб-сайта или установить его для своей веб-страницы?   -  person M. Mennan Kara    schedule 24.08.2012
comment
Я храню закладки, поэтому хочу получить изображение вместе с заголовком на странице asp.net aspx.   -  person azam    schedule 24.08.2012
comment
любой значок веб-страницы, который пользователь захочет сохранить.   -  person azam    schedule 24.08.2012


Ответы (2)


using (WebClient client = new WebClient())
{
  Byte[] favico = client.DownloadData("http://msite.com/favico.ico");
}

Для этого используется WebClient.DownloadData. Вы также можете использовать WebClient.DownloadFile, если хотите сохранить его.

Еще одним пуленепробиваемым подходом может быть загрузка индексной страницы и использование парсера HTML для поиска тега <link>, указывающего, где должна быть иконка (может также применяться к apple-touch-icon или иным образом).

Кстати, теги, которые, как мне кажется, вы хотите разобрать:

<!-- StackOverflow's implementation: -->
<link rel="shortcut icon" href="http://cdn.../favicon.ico">
<link rel="apple-touch-icon" href="http://cdn.../apple-touch-icon.png">

<!-- Google's implementation: -->
<meta content="/images/google_favicon_128.png" itemprop="image">

<!-- Facebook's implementation: -->
<link href="http://static.ak.fbcdn.net/.../q9U99v3_saj.ico" rel="shortcut icon">
person Brad Christie    schedule 24.08.2012
comment
Обратите внимание, что это не всегда верно. Только IE до версии 8 автоматически ищет иконку в корне сайта. Все остальные браузеры, а также IE9, ищут тег <link rel="icon" href="..."/> в документе. Путь может быть каким угодно — и не обязательно корневым. - person Aleks G; 24.08.2012
comment
@AleksG: Итак, мое дополнение о более надежном решении во втором абзаце, но спасибо за дополнительные подробности. - person Brad Christie; 24.08.2012
comment
для синтаксического анализа я предполагаю использовать регулярные выражения? - person azam; 24.08.2012
comment
@ user1575229: я бы не советовал; Вам лучше использовать парсер DOM/HTML. Либо HTMLAgilityPack, либо вы можете создать экземпляр WebBrowser в ASP и использовать его парсер (хотя я не уверен, что это идеально, учитывая, что это ASP приложение и WebBrowser являются классом WinForms. Вы также получите много ненужных накладных расходов, учитывая назначение элемента управления WebBrower — много загрузки только для анализа DOM). - person Brad Christie; 24.08.2012
comment
Обожаю опечатку: StockOverflow :) - person M. Mennan Kara; 24.08.2012
comment
@MennanKara: Хороший улов, ой! ;-) - person Brad Christie; 24.08.2012

В спецификациях HTML нет такого понятия, как «изображение заголовка». Значок, который вы видите на вкладке или рядом с URL-адресом в каком-либо браузере, указывается с помощью конструкции <link rel="icon"/>:

<link type="image/x-icon" href="/images/favicon.ico" rel="icon" />

IE может потребовать от вас использовать немного другой синтаксис:

<link type="image/x-icon" href="/images/favicon.ico" rel="shortcut" />

Проанализируйте страницу и получите значение атрибута href — это путь к значку.

Также обратите внимание, что IE версии 8 и ниже полностью игнорирует эту строку и вместо этого ищет файл favicon.ico в корне сайта. Дополнительную информацию об IE см. в этой несколько старой статье.

person Aleks G    schedule 24.08.2012