Методы извлечения «лучшего» изображения с веб-страницы
-
19-09-2019 - |
Вопрос
Я пытаюсь создать что-то похожее на функцию «Поделиться» в Facebook для своего веб-сайта.
Я дошел до того, что могу принять URL-адрес, очистить его на предмет мета-ключевых слов и соответствующим образом получить заголовки/описания, но я немного застрял в том, как лучше всего определить «вероятные» фотографии, которыми пользователь может захотеть поделиться. .
В настоящее время я использую SimpleXMLElement, чтобы превратить страницу в проходимую модель DOM и найти все теги, превратив их в абсолютные URL-адреса.После этого я не уверен, как мне найти подходящую миниатюру.
Скачиваю ли я их все и ориентируюсь по размеру файла?Использую ли я какую-то эвристику типа «обнаружено в середине страницы»?
Есть ли у кого-нибудь еще какие-либо рекомендации, предложения или советы?
Решение
Некоторое время назад я написал нечто подобное, чтобы получать изображения из скопированных сообщений в блогах.Мои критерии выбора изображения сводились к получению списка всех изображений на странице с последующим назначением «точек приоритета»:
- Игнорировать изображения, размещенные в черном списке, взятом из списка AdBlocker.
- Игнорировать косвенные изображения, например, связанные с таблицами стилей или в IFRAME.
- Игнорировать изображения шириной или высотой менее 50 пикселей.
- Игнорировать изображения, которые повторяются более одного раза
- Назначайте приоритетные точки изображениям, размещенным на хостах из белого списка (например, photobucket, imageshack.us).
- Назначьте приоритетные точки трем самым большим изображениям на странице.
- Назначьте точки приоритета изображениям на одном хосте
- Назначайте приоритетные точки изображениям с определенным тегом ALT.
- Назначайте приоритетные точки изображениям, появляющимся в теге P.
Затем выберите тот, у которого больше всего приоритетных баллов.Это, конечно, не было надежным или чрезмерно научным, но гораздо чаще приносило что-то полезное, чем нет.
Другие советы
У меня нет прямого опыта в этом, поэтому я не уверен, что существует какая-то конкретная передовая практика, но в целом я думаю, что эвристический подход, учитывающий несколько факторов, имел бы смысл из-за изменчивости, обнаруженной в реализациях веб-сайтов.
Я бы рассмотрел два набора предметов:свойства изображения и контекст того, где и как изображения размещаются.
Свойства изображения:
- Ширина и высота соответствуют минимальным пороговым значениям.
- Соотношение сторон разумное (фоновые изображения, которые мозаичны, могут иметь слишком большое соотношение сторон, что является верным признаком того, что изображение может быть неподходящим).
- В изображении присутствует более одного цвета (сложнее обнаружить, но можно избегать различных фоновых изображений)
Контекст изображения:
- Изображение не повторяется на странице (это позволяет избежать использования значков и других элементов дизайна, которые могут повторяться).
- Происходит после тегов h1, h2 и т. д. на странице;это доходит до вашей точки зрения об изображениях, идущих из середины страницы, опять же избегая элементов дизайна.
- Имеет тег alt (хотя он не используется постоянно, поэтому, возможно, не дает много полезной информации)
Я бы присвоил вес предыдущим элементам, а затем ранжировал найденные вами изображения в соответствии с тем, насколько хорошо каждое изображение удовлетворяет правилам.
Также обратите внимание, что некоторые страницы могут использовать CSS (или Flash и т. д.) для отображения изображений.Эти изображения находятся за пределами вашего поля зрения (в соответствии с определенным вами алгоритмом);возможно, это не имеет большого значения, но стоит учитывать.