Как скрести логотипы с сайтов? - PullRequest
5 голосов
/ 10 апреля 2011

Во-первых, это не вопрос о том, как очищать сайты. Я полностью осведомлен о доступных мне инструментах для чистки (css_parser, nokogiri и т. Д. Я использую Ruby для выполнения очистки).

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

Два решения, которые я начал создавать, это:

  1. Используйте API Google AJAX, чтобы выполнить поиск изображений, относящийся к рассматриваемому сайту, с помощью запроса "логотип" и получить первый результат. Я бы сказал, что это логотип примерно в 30% случаев.
  2. Проблема с вышесказанным заключается в том, что Google, похоже, не особо заботится о логотипах, заменяющих изображение CSS (т. Е. Текст H1, представляющий собой изображение, замененное логотипом). Решение, которое я предварительно нашел, состоит в том, чтобы снять все CSS-файлы, отсканировать объявления url (), а затем найти заголовок или логотип слов в именах файлов.

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

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

Так что со всем, что сказано, если у кого-нибудь есть какие-то «из коробки» мысли на этот счет, я бы хотел услышать это. Если я смогу создать решение, которое будет работать достаточно хорошо, я планирую открыть библиотеку для других заинтересованных сторон:)

Спасибо!

Ответы [ 5 ]

4 голосов
/ 12 апреля 2011

Мне нужно было найти логотипы для ~ 10K веб-сайтов для предыдущего проекта и попробовать ту же технику, о которой вы упоминали, для извлечения изображения с «логотипом» в URL. Мой вариант заключался в том, что я загружал каждую веб-страницу в webkit, чтобы все изображения загружались из CSS или JavaScript. Этот метод дал мне логотипы для ~ 40% сайтов.

Затем я подумал о создании приложения, которое Ник предложил вручную выбрать логотип для оставшихся веб-сайтов, однако я понял, что было бы выгоднее просто подарить их кому-нибудь дешево (кого я нашел через Elance ) сделать работу вручную.

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

2 голосов
/ 10 апреля 2011

Создание приложения определенно поможет вам, но я верю, что в конечном итоге потребуется некоторая ручная работа.Вот что я хотел бы сделать.

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

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

1 голос
/ 18 августа 2017

Проверьте этот API на Clearbit.Это очень просто:

Просто отправьте запрос по адресу: https://logo.clearbit.com/[enter-domain-here]

Например: https://logo.clearbit.com/www.stackoverflow.com

и получите изображение логотипа!

Подробнее об этом здесь

1 голос
/ 10 июня 2017

Еще один простой способ решить эту проблему - получить все конечные узлы и получить первый

<a><img src="http://example.com/a/file.png" /></a>

Вы можете искать проекты, чтобы получить html-листовые узлы в сети, или использовать регулярные выражения для получения всех html-тегов.

0 голосов
/ 12 октября 2016

Я использовал консольное приложение C # с пакетом nuget HtmlAgilityPack для очистки логотипов с более чем 600 сайтов.Алгоритм заключается в том, что вы получаете все изображения, которые имеют «логотип» в URL.Проблемы, с которыми вы столкнетесь во время такого извлечения:

  • Относительные изображения
  • Основной URL-адрес - CDN HTTP / HTTPS (если вы не знаете протокол до того, как отправите запрос)
  • Изображения есть?или & со строкой запроса в конце

Имея это в виду, я добился примерно 70% успеха, но некоторые изображения не были настоящими логотипами.

...