Как раз занимался этим 2 года назад)
А все просто - это логическое вычитание двух страниц с разным наполнением:
две разные статьи, два товара и т.д. (т.е. "листовые" элементы структуры дерева)
Соответственно, после этого вы получаете как раз код только той части, которая изменилась.
Затем, сортируете блоки (из результата) по объему текста в порядке УБЫВАНИЯ и получаете код, содержащий контент (первый элемент списка).