Методы извлечения «лучшего» изображения с веб-страницы

StackOverflow https://stackoverflow.com/questions/2421865

Вопрос

Я пытаюсь создать что-то похожее на функцию «Поделиться» в Facebook для своего веб-сайта.

Я дошел до того, что могу принять URL-адрес, очистить его на предмет мета-ключевых слов и соответствующим образом получить заголовки/описания, но я немного застрял в том, как лучше всего определить «вероятные» фотографии, которыми пользователь может захотеть поделиться. .

В настоящее время я использую SimpleXMLElement, чтобы превратить страницу в проходимую модель DOM и найти все теги, превратив их в абсолютные URL-адреса.После этого я не уверен, как мне найти подходящую миниатюру.

Скачиваю ли я их все и ориентируюсь по размеру файла?Использую ли я какую-то эвристику типа «обнаружено в середине страницы»?

Есть ли у кого-нибудь еще какие-либо рекомендации, предложения или советы?

Это было полезно?

Решение

Некоторое время назад я написал нечто подобное, чтобы получать изображения из скопированных сообщений в блогах.Мои критерии выбора изображения сводились к получению списка всех изображений на странице с последующим назначением «точек приоритета»:

  • Игнорировать изображения, размещенные в черном списке, взятом из списка AdBlocker.
  • Игнорировать косвенные изображения, например, связанные с таблицами стилей или в IFRAME.
  • Игнорировать изображения шириной или высотой менее 50 пикселей.
  • Игнорировать изображения, которые повторяются более одного раза
  • Назначайте приоритетные точки изображениям, размещенным на хостах из белого списка (например, photobucket, imageshack.us).
  • Назначьте приоритетные точки трем самым большим изображениям на странице.
  • Назначьте точки приоритета изображениям на одном хосте
  • Назначайте приоритетные точки изображениям с определенным тегом ALT.
  • Назначайте приоритетные точки изображениям, появляющимся в теге P.

Затем выберите тот, у которого больше всего приоритетных баллов.Это, конечно, не было надежным или чрезмерно научным, но гораздо чаще приносило что-то полезное, чем нет.

Другие советы

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

Я бы рассмотрел два набора предметов:свойства изображения и контекст того, где и как изображения размещаются.

Свойства изображения:

  • Ширина и высота соответствуют минимальным пороговым значениям.
  • Соотношение сторон разумное (фоновые изображения, которые мозаичны, могут иметь слишком большое соотношение сторон, что является верным признаком того, что изображение может быть неподходящим).
  • В изображении присутствует более одного цвета (сложнее обнаружить, но можно избегать различных фоновых изображений)

Контекст изображения:

  • Изображение не повторяется на странице (это позволяет избежать использования значков и других элементов дизайна, которые могут повторяться).
  • Происходит после тегов h1, h2 и т. д. на странице;это доходит до вашей точки зрения об изображениях, идущих из середины страницы, опять же избегая элементов дизайна.
  • Имеет тег alt (хотя он не используется постоянно, поэтому, возможно, не дает много полезной информации)

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

Также обратите внимание, что некоторые страницы могут использовать CSS (или Flash и т. д.) для отображения изображений.Эти изображения находятся за пределами вашего поля зрения (в соответствии с определенным вами алгоритмом);возможно, это не имеет большого значения, но стоит учитывать.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top