Crawler: Как узнать, была ли веб-страница обновлена?

рептилия

Обновляется ли веб-страница — это проблема, с которой сталкиваются многие разработчики краулеров.Если она используется только для одноразового сканирования, то эта проблема не имеет значения, а краулер в проекте обычно должен работать в течение длительного времени. контент обновляется, его нужно захватить вовремя.

Идея 1: регулярно сканируйте

Это распространенная идея получения обновленного контента.Этот способ не имеет состояния, тип дурака, мне не нужно знать, какой контент обновляется, я просто хочу обращаться к базе данных каждый раз, когда я получаю веб-страницу, чтобы вернуться в базу данных. Эта идея заключается в том, чтобы тратить ресурсы впустую. Независимо от того, что обновляется другая сторона, вы должны захватить это.

Идея 2: RSS-подписка

RSS (Simple Information Syndication), протокол упаковки и доставки контента, основанный на формате XML, может использоваться для синхронизации веб-контента, в настоящее время подходит для блогов, новостей и т. д. Проблема с таким мышлением заключается в том, что не все веб-сайты предоставляют RSS-каналы, хотя существует универсальныйrsshub, но rsshub также должен поддерживаться самими разработчиками.

Идея 3: код состояния If-Modified-Since

If-Modified-Since: позволяет вернуть 304 Not Modified, если соответствующий контент не был изменен ( 304 Not Modified )Википедия, Пример: если-modified - с: SAT, 29 окт 1994 19:43:31 GMT

If-Modified-Since можно использовать для веб-кэширования, это часть заголовка HTTP, если ответ HTTP имеет заголовок Last-Modified, кеш может использовать заголовок If-Modified-Since, чтобы сделать условный запрос на просмотр если он изменился.

Эта идея работает следующим образом: 1 Запросите веб-страницу в первый раз и извлеките ее локально, предполагая, что имя файла — .html. В это время файловая система имеет время модификации файла.

2 Посетите веб-страницу во второй раз.Если вы обнаружите, что файл .html уже существует локально, отправьте на сервер запрос If-Modified-Since. Напишите время модификации a.html в запросе.

3 Если веб-страница обновлена, сервер вернет ответ 200, затем повторно просканирует веб-страницу и обновит локальный файл.

4 Если веб-страница не обновлена, сервер вернет ответ 304. На данный момент нет необходимости обновлять файл.

Проблема с этой линией мышления состоит в том, что этот метод подходит для обновления статических веб-страниц, но не для динамических веб-страниц, которые динамически получают данные с сервера.

Идея 4: Сравнение сходства веб-контента

Содержимое веб-страницы здесь относится к основному содержимому веб-страницы, за исключением текста в некритических областях, таких как трафик. Метод, представленный в Интернете, представляет собой алгоритм отпечатка веб-страницы + расстояние Хэмминга.Чем больше расстояние Хэмминга двух веб-страниц, тем больше изменение.Размер расстояния Хэмминга необходимо скорректировать в соответствии с фактическими условиями.

Суммировать

Не существует фиксированной процедуры для оценки веб-страниц, необходимо выбрать подходящий метод оценки в зависимости от ситуации проекта и веб-сайта.