Собирайте свойства каждого объекта (свойства тегов, имена классов, стили и т.д.) и его окружение: все объекты той же ноды, где находится текущий объект, цепочку всех родительских нод (xPath), и "дерево" всех вложенных нод.
И так - по каждому.
По количеству совпадений свойств/путей нод И их несовпадений - можно крайне точно определить: на какой предыдущий объект похож текущий.
Т.е. банально по "весам" метрик можно выдавать крайне точное заключение о том, как был изменён конкретный объект относительно предыдущего кода html.