Website Change Monitor на Python — следим за изменениями страниц

Website Change Monitor на Python — следим за изменениями страниц

Если ты хочешь узнавать об изменениях на сайте сразу, без постоянной ручной проверки — тебе поможет Website Change Monitor. Это простой Python-скрипт, который следит за любым URL и сообщает, когда его содержимое изменяется.

📌 Подходит для:

  • мониторинга цен и скидок,

  • отслеживания вакансий,

  • контроля новостей, акций, расписаний,

  • наблюдения за динамическими страницами.


✅ Что делает Website Change Monitor?

Website Change Monitor — это CLI-инструмент, который:

  1. Загружает HTML-страницу по указанному URL.

  2. Извлекает только текстовое содержимое (без тегов, стилей и скриптов).

  3. Создаёт хэш (уникальную цифровую подпись) текста с помощью алгоритма MD5.

  4. Периодически (каждые N секунд) заново загружает страницу и сравнивает её хэш с предыдущим.

  5. Если хэш изменился — значит, контент на странице поменялся, и скрипт уведомит об этом в терминале.


🧰 Необходимые библиотеки

Для корректной работы скрипта тебе нужно установить следующие модули:

pip install requests beautifulsoup4

📦 Что за библиотеки?

Библиотека Назначение
 requests  Загружает содержимое страницы через HTTP-запрос
 beautifulsoup4  Извлекает текст из HTML-документа
 hashlib  Стандартная библиотека Python — используется для создания MD5-хэша
 time, argparse  Стандартные библиотеки для задержек и CLI-параметров

🔍 Как работает скрипт — пошагово

Давайте разберёмся, как именно устроена логика мониторинга:

Получение страницы

Сначала скрипт делает GET-запрос к нужному сайту через requests.get(). В случае ошибки (например, 404 или 500) выбрасывается исключение.

resp = requests.get(url, timeout=10)
resp.raise_for_status()

Извлечение текста

HTML-код очищается от тегов, скриптов и стилей. Остаётся только чистый текст, который будет использоваться для сравнения.

soup = BeautifulSoup(resp.text, 'html.parser')
text = soup.get_text()

Создание цифрового отпечатка

Для определения изменений создаётся MD5-хэш от текста страницы.

hashlib.md5(text.encode('utf-8')).hexdigest()

Сравнение и мониторинг

Скрипт работает в бесконечном цикле. Каждые N секунд:

  • скачивает страницу,

  • считает хэш,

  • сравнивает его с предыдущим значением.

Если хэши различаются — значит, на странице были изменения.

if current_hash != last_hash:
    print("🔔 Обнаружено изменение!")

🧑‍💻 Пример запуска

python site_monitor.py --url https://example.com --interval 60

Параметры:

  • --url — адрес страницы для мониторинга;

  • --interval — интервал проверки в секундах (по умолчанию 60).

💻 Полный код скрипта

import requests
from bs4 import BeautifulSoup
import hashlib
import time
import argparse

def get_hash(url):
    resp = requests.get(url, timeout=10)
    resp.raise_for_status()
    soup = BeautifulSoup(resp.text, 'html.parser')
    text = soup.get_text()
    return hashlib.md5(text.encode('utf-8')).hexdigest()

def monitor(url, interval):
    last_hash = None
    print(f"🚀 Monitoring {url} every {interval}s...")
    while True:
        try:
            current_hash = get_hash(url)
            if last_hash is None:
                last_hash = current_hash
            elif current_hash != last_hash:
                print(f"🔔 Change detected at {time.strftime('%Y-%m-%d %H:%M:%S')}")
                last_hash = current_hash
        except Exception as e:
            print(f"❌ Error: {e}")
        time.sleep(interval)

if __name__ == "__main__":
    parser = argparse.ArgumentParser(description="Website Change Monitor")
    parser.add_argument("--url", required=True, help="URL to monitor")
    parser.add_argument("--interval", type=int, default=60, help="Check interval in seconds")
    args = parser.parse_args()
    monitor(args.url, args.interval)

🎯 Заключение

Website Change Monitor — отличный пример того, как можно использовать Python для автоматизации рутинных задач. Скрипт простой, понятный и легко расширяется под любые нужды. Особенно полезен для маркетологов, фрилансеров, ресерчеров и тех, кто работает с динамическими данными в интернете.

Комментарии

Пока нет комментариев. Будьте первым!

Оставить комментарий

Чтобы оставить комментарий, пожалуйста, войдите или зарегистрируйтесь.