Бот парсер обьявлений с нужных сайтов по параметрам

Замовник: AI | Опубліковано: 22.01.2026

1) Общая информация Название проекта: Бот мониторинга объявлений по заданным параметрам + исключение продавцов (“минус-продавцы”) Цель: Автоматически находить новые объявления на порталах недвижимости/объявлений по заданным фильтрам и отправлять 1 раз в сутки подборку ссылок в Telegram (обязательно) и опционально в WhatsApp / Email. Источники (минимум): Wallapop (es.wallapop.com) Idealista (idealista.com) Milanuncios (milanuncios.com) Предпочитаемый стек: Python, управление через Telegram-бота, размещение на сервере (VPS).2) Роли пользователей и права2.1 Роли Администратор: полные права (создание/редактирование фильтров, управление продавцами, управление источниками, получателями, расписанием, просмотр логов/статуса). Оператор (опционально): может управлять фильтрами и продавцами, но без доступа к системным настройкам. Получатель: получает отчеты, не управляет настройками.2.2 Авторизация Доступ к управлению ботом только по списку Telegram user_id (whitelist). Все команды управления доступны только авторизованным.3) Функциональные требования3.1 Мониторинг объявлений Система должна: Периодически (по расписанию) проверять новые объявления по заданным фильтрам. Выявлять и сохранять уникальные объявления, чтобы не присылать повторно. Уметь исключать объявления по “минус-продавцам” (blacklist sellers) и/или по ключевым признакам (телефон, id продавца, имя/ник, ссылка на профиль — в зависимости от сайта). Формировать ежедневный дайджест (1 раз в сутки) со списком новых объявлений за период.3.2 Фильтры (настройки “разделов”) В интерфейсе Telegram должна быть возможность: Создать фильтр (называется “Раздел” / “Подборка”). Для каждого фильтра указать: Источник: wallapop / idealista / milanuncios (можно несколько) Параметры поиска (см. 3.3) Включено/выключено Получатели (кому отправлять: TG/WA/email) Частота: по умолчанию 1 раз/сутки (время отправки настраиваемое) Редактировать фильтр Удалять фильтр3.3 Параметры поиска (минимальный набор) Для каждого источника должны поддерживаться параметры (по возможности ресурса): Локация (город/регион/провинция, радиус если возможно) Тип объекта (квартира/дом/комната и т.п. — если применимо) Цена: min/max Площадь: min/max (если доступно) Кол-во комнат: min/max (если доступно) Ключевые слова включить/исключить (include/exclude) Доп. параметры: этаж, лифт, новострой/вторичка, состояние и т.п. (опционально) Сортировка (по дате публикации, newest first — приоритет) Важно: если ресурс не позволяет часть параметров через URL/поиск, бот должен делать постфильтрацию по полям карточки (если эти поля удается стабильно извлекать).3.4 “Минус-продавцы” (blacklist) Нужно уметь: Добавить продавца в blacklist: по ссылке на профиль продавца (если есть) по seller_id (если доступно) по имени/нику (как запасной вариант) по телефону/контакту (если публикуется) Удалить продавца из blacklist Просмотреть список blacklist Возможность привязки blacklist: глобально (для всех фильтров) и/или локально (только для конкретного фильтра)3.5 Дедупликация (не слать одно и то же) Для каждого объявления хранить: уникальный идентификатор (если есть у сайта) или нормализованный URL дата первого обнаружения источник привязанный фильтр(ы) статус “отправлено / не отправлено” (опционально) хэш ключевых полей Повторная отправка возможна только если администратор явно выберет “переслать”.3.6 Отчеты и уведомления Ежедневный отчет (по каждому фильтру или общий): Заголовок: название фильтра, период, количество новых объявлений Список объявлений: ссылка цена (если удалось извлечь) локация (если удалось) краткое описание/заголовок (если удалось) дата публикации (если доступно) Формат для Telegram: сообщения + возможно батчинг (например по 10-20 ссылок на сообщение) Опционально: Email: письмо (HTML или текст) WhatsApp: через провайдера (Twilio/360dialog/и т.п.) — уточнить отдельно3.7 Управление через Telegram (обязательно) Команды/меню (примерная структура): /start — приветствие, проверка доступа “Фильтры”: список фильтров создать фильтр (wizard) редактировать (параметры, получатели, расписание) включить/выключить удалить “Продавцы (blacklist)”: добавить (ввести ссылку/id/имя) список удалить “Статус”: состояние парсеров по источникам дата последнего запуска кол-во найденных/отфильтрованных/ошибок “Тест”: запустить проверку конкретного фильтра вручную (без ожидания суток) “Настройки”: время ежедневной отправки лимиты выбор каналов доставки UI предпочтительно через Inline-кнопки и пошаговые диалоги.4) Технические требования4.1 Архитектура Python сервис(ы) на сервере: Telegram Bot (UI и управление) Парсеры/воркеры (по расписанию) Хранилище + логирование Возможность запуска в Docker (желательно): docker-compose: bot + worker + db4.2 Хранилище Подойдет: PostgreSQL (предпочтительно) или SQLite (если маленький объем) Таблицы минимум: filters filter_params sellers_blacklist listings (объявления) deliveries (история отправок) logs/errors4.3 Планировщик APScheduler / Celery beat / cron + worker Расписание: сбор данных может быть чаще (например каждые 1–3 часа), но отправка — 1 раз в сутки (требование).