how to determine if webpage has been modified

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

Базовая формула та же, что и выше, но этот подход усредняет частичные суммы для ускорения сходимости.

Определите двухпараметрическую функцию pie (h, w) так, чтобы:

pie(0,1) = 4/1
pie(0,2) = 4/1 - 4/3
pie(0,3) = 4/1 - 4/3 + 4/5
pie(0,4) = 4/1 - 4/3 + 4/5 - 4/7
... and so on

Итак, ваша первая возможность исследовать рекурсию - это кодирование этого «горизонтального» вычисления при увеличении параметра «width» (для «высоты» нуля).

Затем добавьте второе измерение с этой формулой:

pie(h, w) = (pie(h-1,w) + pie(h-1,w+1)) / 2

, которое используется, конечно, только для значений h больше нуля.

Хорошая особенность этого алгоритма состоит в том, что вы можете легко смоделировать его с помощью электронной таблицы, чтобы проверить код при изучении результатов, полученных с помощью постепенно увеличивающихся параметров. К тому времени, когда вы вычисляете pie (10,10), у вас будет приблизительное значение для pi, которое достаточно для большинства инженерных целей.

6
задан DavidG 8 July 2014 в 09:43
поделиться

4 ответа

Well, first you need to decide what is noise and what isn't. You can use a HTML parser like BeautifulSoup to remove the noise, pretty-print the result, and compare it as a string.

If you are looking for an automatic solution, you can use difflib.SequenceMatcher to calculate the differences between the pages, calculate the similarity and compare it to a threshold.

8
ответ дан 10 December 2019 в 00:40
поделиться

Что-то вроде Расстояние Левенштейна может пригодиться, если вы установите порог изменений на расстояние, которое игнорирует нужное количество шума для вас.

0
ответ дан 10 December 2019 в 00:40
поделиться

просто сделайте снимки файлов с помощью MD5 или SHA1 ... если значения будут отличаться в следующий раз, когда вы проверьте, то они изменяются.

-1
ответ дан 10 December 2019 в 00:40
поделиться

Решение действительно зависит от того, очищаете ли вы определенный сайт или пытаетесь создать программу, которая будет работать для любого сайта.

Вы можете увидеть, какие области часто меняются, сделав что-то вроде этого:

 diff <(curl http://stackoverflow.com/questions/) <(sleep 15; curl http://stackoverflow.com/questions/)

Если вас беспокоит только один сайт, вы можете создать несколько выражений sed для фильтрации таких вещей, как временные метки. Вы можете повторять до тех пор, пока не будет отображаться разница для небольших полей.

Общая проблема намного сложнее, и я бы предложил сравнить общее количество слов на странице для начинающих.

3
ответ дан 10 December 2019 в 00:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: