Если ты хочешь узнавать об изменениях на сайте сразу, без постоянной ручной проверки — тебе поможет Website Change Monitor. Это простой Python-скрипт, который следит за любым URL и сообщает, когда его содержимое изменяется.
📌 Подходит для:
-
мониторинга цен и скидок,
-
отслеживания вакансий,
-
контроля новостей, акций, расписаний,
-
наблюдения за динамическими страницами.
✅ Что делает Website Change Monitor?
Website Change Monitor — это CLI-инструмент, который:
-
Загружает HTML-страницу по указанному URL.
-
Извлекает только текстовое содержимое (без тегов, стилей и скриптов).
-
Создаёт хэш (уникальную цифровую подпись) текста с помощью алгоритма MD5.
-
Периодически (каждые N секунд) заново загружает страницу и сравнивает её хэш с предыдущим.
-
Если хэш изменился — значит, контент на странице поменялся, и скрипт уведомит об этом в терминале.
🧰 Необходимые библиотеки
Для корректной работы скрипта тебе нужно установить следующие модули:
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 для автоматизации рутинных задач. Скрипт простой, понятный и легко расширяется под любые нужды. Особенно полезен для маркетологов, фрилансеров, ресерчеров и тех, кто работает с динамическими данными в интернете.
Пока нет комментариев. Будьте первым!