Market Watcher — Аналитика цен. Пока под Яндекс Маркет.
Лёгкий аналитический инструмент, который автоматически собирает данные по товарам с Яндекс Маркета, сохраняет их в базу и строит статистику по текущим ценам и недельным ценовым срезам.
Проект умеет:
- Парсить выдачу Яндекс Маркета (Playwright)
- Хранить все найденные карточки товара в SQLite
- Обновлять цены существующих объявлений
- Добавлять новые карточки
- Делать еженедельные "срезы" цен для аналитики
- Показывать статистику на веб-странице (FastAPI + Jinja2)
- Самостоятельно поддерживать БД в актуальном состоянии (актуализация, но без удаления старых данных)
- Работать автоматически через фоновый планировщик APSchedule
В настоящее время, версия сильно ограничена, текущий функционал:
- Полный цикл скрейпа первой страницы Яндекс Маркета
- Парсинг: название, цена, ссылка, external_id
- Автоматическое обновление (last_seen_at) и цены при изменении
- Ведение истории (карточки не удаляются)
- Запуск планировщика: /Скрейп каждые 60 минут /Срезы раз в 7 дней Веб-интерфейс: /Список актуальных объявлений /Фильтрация по цене /Статистика (min/max/avg) /Недельная динамика цен
Возможное развитие (update v.2.0.):
- Поддержка других источников (в виде модулей)
- Поддержка парсинга всех страниц
- Добавление различных категорий, а не узкого анализа 1 товара
- Более глубокая аналитика: /динамика по моделям /распределение цен /графики Экспорт данных (CSV) Подключение к ТГ-боту для уведомлений о падении цен
Запуск:
- Клонировать репозиторий git clone https://github.com/username/market_watcher.git cd market_watcher
- Создаем окружение, устанавливаем зависимости. 2.1) Устанавливаем chromium - playwright install chromium
- Создаем .env добавляем/меняем значение для переменных: MARKET_SEARCH_URL=https://market.yandex.ru/...(товар который будете мониторить) SCRAPE_INTERVAL_MINUTES=60 SNAPSHOT_INTERVAL_DAYS=7 DATABASE_URL=sqlite:///./market.db
- Запускаем - python main.py Ждем когда сайт поднимется на http://127.0.0.1:8000
- python scraper_master.py Запускаем скрапер один раз на старте, далее работает автоматически согласно установленному интервалу.
P.S. в директории scripts тестовые (вспомогательные) инструменты проекта: clear_listings.py — очистка базы от объявлений. dump_html.py — сохранить HTML выдачи Маркета. dump_yandex_html.py — вариант дампа под тест. parse_yandex_dump.py — парсер сохранённого HTML. test_save_to_db.py — тест записи в БД. test_scraper.py — тест скрейпера. yandex_dump.html — тестовый дамп выдачи.