У большинства сайтов в шапке или в футере часто находится их название.
Какой алгоритм можно использовать, чтобы найти повторяющиеся значения и попытаться из них получить данные о названии?
Например, есть адрес
Нужно найти название организации. Вручную алгоритм следующий. Смотрим шапку, смотрим футер, если не находим переходим на страницу контакты или о сайте
Результатом будет названия: Хабрахабр Компания "ТМ"
Как не переходя на сайт вручную получить подобные данные?
Хотелось бы понять алгоритм
Я бы, наверное, сперва попробовал выделить обвязку страниц. Т. е. взять несколько страниц сайта и определить на них повторяющийся текст. А дальше уже эмпирически подбирать правила для разбора получившегося. Например, часто название компании идет после или перед ©, часто оно упоминается в тайтле, часто перед ним идут слова "компания", "ООО" и т. п.
Нужно парсить HTML, но только не делай это через регулярные выражения. Каждый раз когда ты парсишь HTML регулярками — в мире умирает один разработчик.
Для Хабра, например футер легко найти, у него логичный id:
<div id="footer">
Дальше ты берешь весь текст из футера и ищешь там название компании и ссылки на страницу "Контакты".
У других сайтов футер или хедер найти будет тяжелее. Нужно будет проанализировать несколько десятков сайтов и составить список правил, по котором можно будет легко найти в коде страницы блоки с нужными елементами.</div>
Единого алгоритма нет, так как нет единого стандарта описания организаций на сайтах.
Чтобы не переходить вручную нужно переходить программно. Для этого пишутся (или используются универсальные) программы-парсеры.
Если будете писать сами, то алгоритм нужно будет делать многошаговый и многовариантный.
В идеальном мире на идеальных сайтах присутствует микроразметка hCard, из которой можно извлечь название организации и другие данные о ней, заботливо предоставленные хозяевами сайта.
Все остальные варианты лучше сразу обработать вручную, так как их слишком много :)
Так же можно попробовать найти, к примеру img с классом logo и посмотреть у него alt или title. Как дополнительный вариант для проверки пойдет.
Вопросов крайне много, ровным счетом как и неопределенности. А если на странице будет несколько названий организаций. Как сформулирована у Вас задача? Вам надо собрать все названия со указанных страниц или Вам надо установить принадлежность сайта к компании?