Рассматривали ли вы обнаружение клона ? Эти инструменты определяют, как повторно копируется и вставляется код, что очень похоже на то, что вы хотите. Конечно, эти страницы были созданы таким образом, или, возможно, созданы как «экземпляры шаблона». Такие клоны-детекторы автоматически обнаруживают общие черты.
Некоторые детекторы клонов соответствуют одинаковым подстрокам максимальной длины. Проблема в том, что тривиальные различия в веб-структуре (лишние пробелы, новые строки, HTML-комментарии) предотвращают множество совершенно правильных совпадений, поэтому вы пропускаете дела. Это также имеет недостаток в том, что он находит только идентичные строки, а не шаблоны с точками вариации. Алгоритмы, которые выполняют наведение на строки (ответ другого автора), могут страдать от этих проблем.
Что вы действительно хотите, так это совпадения по структурам, составляющим языки (веб-страниц).
Многие детекторы клонов («на основе токена») обнаруживают общие последовательности кода токена, которые различаются максимум одним токеном. Они часто могут игнорировать пробелы, используя виртуальный лексер, специфичный для языка. То, что вы получаете, это шаблоны, чьи переменные точки представляют собой одиночные токены.
По моему опыту, вариации чаще всего являются языковыми подструктурами (выражениями, последовательностями операторов и т. Д.), И поэтому вы хотите, чтобы вы обнаруживали клон на основе этого. Наш инструмент CloneDR находит клоны, использующие грамматики языка, чтобы управлять процессом, то есть он обнаруживает абстрактные синтаксические деревья, полученные путем анализа страниц. (Несколько ключевых документов по обнаружению клонов, в том числе о том, как работает CloneDR, перечислены на этой странице Википедии).
В вашем случае языковая грамматика будет представлять собой смесь языков, которые составляют ваши веб-страницы, например, HTML, JavaScript и любой другой динамический язык, который вы использовали для динамического создания веб-текста. (У нас есть детекторы клонов для грязного HTML, JavaScript, C #, Java, JSP, PHP, [еще не для Perl, но близко!] ...). Вы можете увидеть некоторые отчеты об обнаружении клонов для разных языков (к сожалению, не для HTML) по ссылке.
Результаты CloneDR - это в точности общность (шаблоны), точки изменения и различия точек.