Как бы вы выбрали лучшее изображение с веб-страницы в гусеничном шасси? - PullRequest
0 голосов
/ 17 июля 2010

Если вам дали какую-либо случайную веб-страницу в интернете и у вас был только источник HTML.Какой метод будет использовать, чтобы дать вам наиболее точное изображение, которое лучше всего описывает эту веб-страницу?Предположим, что нет метатегов или подсказок.

Facebook делает что-то похожее, когда вы публикуете ссылку, но они дают вам выбор из n изображений на выбор, они фактически не выбирают одно, если на нем нет метатегов.

Ответы [ 4 ]

1 голос
/ 17 июля 2010

Попробуйте проанализировать структуру страницы.У большинства веб-страниц примерно есть заголовок, контент и область нижнего колонтитула.Область содержимого, скорее всего, будет содержать изображения, относящиеся к теме страницы, поэтому вы именно это и ищете.

Найдите область содержимого

Большинство областей содержимого - это div элементыс идентификатором или классом с именем content, так что это всегда хорошее первое предположение.Могут быть альтернативные дескрипторы элемента содержимого, поэтому вам нужно будет провести некоторое исследование, чтобы найти общие шаблоны.

В области содержимого в большинстве случаев также будет несколько заголовков h1 или h2, поэтомуэто еще один индикатор, который нужно искать.

Найти верхний и нижний колонтитулы

Другой подход - определить верхний и нижний колонтитулы.Заголовки обычно содержат подсказку к логотипу сайта, такую ​​как изображение, имя класса CSS или ссылка на корень сайта.Нижние колонтитулы, скорее всего, содержат такие вещи, как заявления об авторских правах.

Вы также можете найти верхний и нижний колонтитулы, проанализировав ссылки на странице.Большинство внутренних ссылок будут находиться в верхнем и нижнем колонтитулах, в то время как контент имеет относительно больше исходящих ссылок, если таковые имеются.

Если у вас есть верхний и нижний колонтитулы, контент обычно находится между:)

Найдите изображение

После того как вы определили область содержимого, первое изображение, как правило, является вашим лучшим выбором.Однако вы должны игнорировать изображения с небольшой шириной и / или высотой, так как это, вероятно, будут декоративные изображения.

Вы также можете дважды проверить изображения по любым включенным файлам CSS, чтобы убедиться, что выне выбирая изображение, связанное с дизайном страницы.

Вернитесь к обоснованному предположению

Если вы не можете надежно угадать область содержимого страницы, просто используйте самое большое изображение настраница, как предположил egrunin.Опять же, вы можете сравнить это изображение с CSS-файлами, чтобы исключить любые изображения, связанные с дизайном.

В альтернативном случае вы можете зарегистрировать URL-адрес и просмотреть эти страницы, чтобы улучшить свои алгоритмы обнаружения изображений.

1 голос
/ 17 июля 2010

Если вы найдете метасвойство og:image, вы можете использовать его совершенно безопасно, как часть спецификации Open Graph , используемой для предоставления изображений для ссылок в Facebook.

Пример формата:

<html xmlns:og="http://opengraphprotocol.org/schema/">
    <head>
        <title>The Rock (1996)</title>
        <meta property="og:image" content="http://ia.media-imdb.com/rock.jpg"/>
        ...
    </head>
    ...
</html>
1 голос
/ 17 июля 2010

Это предположение, но:

  • игнорирование всего размещенного в другом домене исключит большинство объявлений
  • Как только вы захватили изображения, вы можете получить их размер; самый большой, вероятно, тот, который нужно использовать.
  • Изображения, которые находятся внутри <a> и указывают на корень домена, являются, вероятно, логотипами. Пример: логотип SO на этой странице находится внутри <a href="/"></a>.

Отредактировано, чтобы добавить:

Это правда, что крупные сайты используют вспомогательные серверы для своих изображений. Но вы, вероятно, могли бы составить пару простых правил синтаксического анализа, которые получат 80% случаев, выбрав g-ecx.images-amazon.com и static.ak.fbcdn.net как не рекламные серверы.

0 голосов
/ 17 июля 2010

Ну, я бы попытался найти div / spans / h1 с чем-то вроде class или id = " logo " или " top ". Почти на каждой странице есть логотип в верхней части страницы. Просто посмотрите на логотип stackoverflow :).

Я делаю это так в моем сканере, и он отлично работает:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...