Кейс

Парсер заказов с Profi.ru

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

О проекте

Контекст проекта

Факты, которые можно подтвердить по проекту и открытому репозиторию.

Тип проекта

Python-приложение для мониторинга новых заказов на динамической веб-странице и отправки релевантных карточек в Telegram.

Источник

Profi.ru без отдельного публичного API для требуемого сценария; страница загружается через Playwright.

Роль Александра

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

Задача

Проблема, ограничения и роль в проекте

Почему понадобилось отдельное решение и какие рамки учитывались при разработке.

Исходная проблема

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

Почему не обычный HTTP-запрос

Контент загружается динамически, поэтому проект использует реальный браузер и работает с DOM через Playwright.

Ограничения

Работа зависит от вёрстки, авторизации и правил площадки. Частые проверки увеличивают риск ограничений аккаунта.

Конфиденциальность

Данные аккаунта, токен Telegram и реальные заказы не публикуются. В репозитории хранится только код и пример интерфейса.

Архитектура

Как устроено решение

Основные компоненты и путь данных без привязки к закрытым доступам и секретам окружения.

01

Авторизация

Сессия входа сохраняется и повторно используется без постоянных логинов.

02

Playwright

Headless-браузер открывает динамическую страницу и получает готовый DOM.

03

Parser

Извлекает ID, заголовок, описание и ссылку каждой карточки.

04

Filters и storage

Проверяют ключевые слова и сохраняют ID уже обработанных заказов.

05

Telegram

Formatter готовит сообщение, а бот отправляет только новые подходящие заказы.

Функции

Ключевые функции

Функции перечислены по фактической реализации, а не как возможные будущие доработки.

Динамический контент

Playwright ждёт загрузку страницы и работает с элементами, которых нет в исходном HTML.

Фильтр по ключевым словам

Название и описание проверяются до отправки уведомления.

Защита от дублей

ID обработанных карточек сохраняются и не отправляются повторно после перезапуска.

Telegram-уведомления

Подходящий заказ приходит со структурированным описанием и ссылкой.

Настраиваемый интервал

Период проверки задаётся конфигурацией и не должен быть агрессивным.

Разделение модулей

Авторизация, клиент, parser, filters, storage и Telegram-часть разделены.

Подтверждение

Демонстрация и исходный код

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

Результат

Результат и измерения

Отделяю подтверждённый функциональный результат от показателей, которые не передавались после запуска.

До

Пользователь вручную обновлял страницу, просматривал карточки и проверял их соответствие специализации.

После

Система отслеживает новые ID, применяет фильтр и отправляет в Telegram только подходящие заказы.

Измеримые показатели

Статистика времени реакции и числа полученных заказов публично не собиралась. Результат подтверждается функционально, кодом и демонстрационным скриншотом.

Выводы

Что изменилось бы в следующей версии

Выводы по архитектуре, эксплуатации и дальнейшему развитию проекта.

После запуска

В проекте появились сохранение авторизации, контроль новых ID и рекомендации по безопасному интервалу проверок.

Что улучшить сейчас

Перенести секреты из config.py в переменные окружения, добавить устойчивые селекторы, тесты parser и уведомления об изменении структуры страницы.

Следующий этап

Хранить историю в базе данных, добавить несколько наборов фильтров и метрики успешных и ошибочных циклов.

Услуги

Что может понадобиться вместе с этой задачей

Дополнительные направления, которые часто используются вместе с этой услугой.

Связаться

Создать заказ

Свяжитесь удобным способом и коротко опишите задачу. Даже если пока нет точного ТЗ, можно начать с идеи и желаемого результата.

Нужен похожий парсер?

Напишите, какие данные нужно собирать, откуда их брать и куда выгружать результат. Я помогу оценить реализуемость и предложу удобную структуру проекта.