kir64
@kir64
python developer

Как работают сервисы типа websvodka.ru?

Прочитал про них статью на хабре:
habrahabr.ru/company/embc/blog/249075

Как сделать простое текстовое сравнение понятно, а вот как происходит графическое отображение всего что изменилось с сохранением дизайна страницы как на скриншоте здесь:
12b3849d7eab67b5aef7f30009cf9bc1.png
и здесь:
94b4978dd83c4f5ca874c238073e8c33.png
Как такое может быть реализовано?
  • Вопрос задан
  • 901 просмотр
Решения вопроса 2
  • Дизайн страницы зависит от css.
    Css зависит от html.
    Чтобы сохранить дизайн страницы нужно сохранить html.
    Чтобы сохранить html нужно строить AST обеих версий и показывать изменения на максимально глубоком уровне.
    Ответ написан
  • @nirvimel
    Как сделать простое текстовое сравнение понятно

    А вот и совсем не понятно, потому что текстового сравнения HTML там нет. Страница сначала полностью парсится, потом идет по-элементное сравнение всех текстовых элементов. Если расстояние меньше константы, элементам присваивается единый uid (то есть они признаются парой вариантов одного элемента). Для других тегов, содержащих в себе текст оценивается относительный объем совпадающих дочерних текстовых элементов, на основе этого производится их идентификация, и так идет проход снизу вверх, пока не соберется общее дерево. А сама раскраска diff-отличий для сопоставленных текстовых элементов - тривиальная задача.

    Я хорошо знаю эту тему, потому что однажды писал подобное. Тема сложная, готовых решений нет, универсальных подходов тоже нет (мое описание упрощено на порядок), куча разных граничных случаев, мозг закипает от одной только декомпозиции задачи. В общем я так и не закончил решение в тот раз, спонсор потерял веру в проект, а без финансирования на голом энтузиазме такого масштаба проекты не заканчиваются в одиночку. До сих пор мечтаю продолжить, пусть на других технологиях, но с большим опытом в этой теме.
    Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через TM ID
Похожие вопросы
Вакансии с Моего Круга Все вакансии
Заказы с Фрилансим Все заказы