Как определить, была ли модифицирована веб -страница
Вопрос
У меня есть снимки нескольких веб -страниц, взятых в 2 раз. Что является надежным методом определения того, какие веб -страницы были изменены?
Я не могу полагаться на что -то вроде RSS -канала, и мне нужно игнорировать незначительный шум, например, текст даты.
В идеале я ищу решение Python, но интуитивно понятный алгоритм также был бы отличным.
Спасибо!
Решение
Ну, сначала вам нужно решить, что такое шум, а что нет. Вы можете использовать HTML -анализатор Beautifulsoup Чтобы удалить шум, довольно напечатать результат и сравнить его как строку.
Если вы ищете автоматическое решение, вы можете использовать difflib.SequenceMatcher
Чтобы рассчитать различия между страницами, вычислить сходство и сравните его с порогом.
Другие советы
Решение действительно зависит, если вы царапаете конкретный сайт или пытаетесь создать программу, которая будет работать на любой сайт.
Вы можете увидеть, какие области меняются, часто делая что -то вроде этого:
diff <(curl http://stackoverflow.com/questions/) <(sleep 15; curl http://stackoverflow.com/questions/)
Если вы беспокоитесь только о одном сайте, вы можете создать некоторые выражения SED, чтобы отфильтровать такие вещи, как марки времени. Вы можете повторить, пока не будет показана разница для небольших полей.
Общая проблема намного сложнее, и я бы посоветовал сравнить общее количество слов на странице для начинающих.
Что-то типа Левенштейн расстояние Может пригодиться, если вы установите порог изменений на расстояние, которые игнорировали правильное количество шума для вас.
Просто сделайте снимки файлов с помощью MD5 или SHA1 ... если значения различаются в следующий раз, когда вы проверяете, то они изменены.