Telegram-каналы и чаты
Сообщения, авторы, реакции и вложения из открытых каналов и групп. Читаем клиентскими библиотеками, а не веб-версией.
- история канала с указанной даты
- дозабор только новых сообщений
- фильтр по ключевым словам
Услуга · сбор данных · от 12 рабочих дней
Не скрипт, который сломается через неделю, а сервис: сборщик, база и веб-интерфейс с фильтрами. Работает по расписанию и сам сообщает, когда источник изменился.
Что вы получите
Данные, собранные руками, устаревают быстрее, чем попадают в таблицу, а разовый скрипт через месяц некому чинить. Поставка одинаковая для любого источника.
Асинхронный обход с очередью задач: параллельные запросы, таймауты, ограничение скорости под каждую площадку и повтор упавших страниц с нарастающей паузой. Правила разбора вынесены из кода в конфигурацию — селектор правится без пересборки образа.
Python · asyncio · запуск по расписанию
PostgreSQL как источник истины: схема под ваши сущности, ключ дедупликации, история значений и отметка запуска у каждой записи. Схема меняется миграциями — неудачное изменение откатывается одной командой.
PostgreSQL · миграции · история значений
Фильтры по любому полю, поиск, сортировка, журнал запусков и выгрузка текущего фильтра в CSV или Excel. Тот же принцип — «что отфильтровал, то и выгрузил» — мы реализовали в операторской панели движка распределения товара.
CSV · XLSX · журнал запусков
Источники
Четыре типа источников, у каждого своя механика обхода. Смешивать их в одном проекте можно: база и интерфейс общие.
Сообщения, авторы, реакции и вложения из открытых каналов и групп. Читаем клиентскими библиотеками, а не веб-версией.
Карточки товаров, объявления, вакансии, публикации. Пагинация, вложенные страницы, подгрузка по прокрутке.
Публичные карточки, цены и наличие на Ozon и Wildberries. Где у площадки есть официальный API — берём данные из него.
Отраслевые справочники, прайс-листы поставщиков, публичные реестры — обычно разово, но большим объёмом.
Устойчивость
Парсер живёт в чужой среде, которая меняется без предупреждения. Ниже — то, что закладываем по умолчанию, а не за отдельные деньги.
Запрос ограничен по времени, упавший повторяется с нарастающей паузой. Не поднявшаяся страница уходит в очередь неудач и не роняет весь запуск.
Пул адресов и пользовательских агентов, ограничение частоты запросов на домен: цель — не создавать площадке нагрузку.
Запуск по cron: ночью, раз в час, раз в неделю. Параллельные запуски блокируются, чтобы два обхода не писали в одну таблицу.
Уведомление в Telegram или на почту, когда запуск упал, не уложился в окно или собрал заметно меньше записей, чем в прошлый раз.
Правила лежат в репозитории и версионируются: у каждой записи видно, какой версией она собрана.
Исходный ответ площадки сохраняется: неправильно разобранное поле переразбирают из сохранённого, без повторного обхода источника.
Правовая рамка
Короткий раздел без юридического пафоса: правовых гарантий мы не даём, но правила, которых держимся, лучше узнать до договора.
Только публично доступные данные
Работаем с тем, что открыто любому посетителю без авторизации и без обхода платного доступа. Нужен чужой логин или снятие технического ограничения — это не наша задача.
Уважаем robots.txt и ограничения площадок
Читаем robots.txt и придерживаемся его, ограничиваем частоту запросов. Где есть официальный API или открытая выгрузка — берём их, а не обходим интерфейс.
Персональные данные — только при законном основании
Имена, телефоны, адреса и профили собираем, когда у заказчика есть законное основание их обрабатывать и он готов зафиксировать это в договоре. Ответственность за дальнейшую обработку — на его стороне.
При сомнениях в законности отказываемся
Если задача выглядит как сбор закрытой информации, обход защиты или массовый сбор контактов для рассылок без согласия людей — говорим сразу и не берёмся.
Цена и срок
Цена открытая: в вилку входит вся поставка, а не только код сборщика.
Стоимость проекта45 000 – 70 000 ₽
12–14 рабочих дней от согласованного списка полей до приёмки, оплата 30/70 — на старте и после приёмки. Место в вилке определяют число источников, сложность обхода и авторизации, объём истории при первом заполнении базы и число полей в интерфейсе. Точную сумму называем после короткого созвона, до начала работы. Две недели после приёмки действует гарантия: ошибки реализации по техническому заданию исправляем бесплатно.
Информация на сайте не является публичной офертой. Стоимость и сроки фиксируются в договоре после согласования состава работ. Гарантия распространяется на ошибки реализации по техническому заданию и не покрывает изменения на стороне источника — их разбираем отдельно.
Порядок работы
Каждый этап заканчивается тем, что можно посмотреть и проверить.
Смотрим источники вместе: что доступно без авторизации, как устроена навигация, какие поля нужны и в каком виде. Итог фиксируется письменно — дальше объём работы не предмет спора.
Пишем обход и разбор, настраиваем повторы, ограничение скорости и расписание. Первую партию данных показываем до интерфейса: на ней видно, те ли это поля.
Схема, миграции, дедупликация, история значений. Поверх — таблица с фильтрами, журнал запусков и выгрузка в CSV и Excel. Разворачиваем в Docker на вашем сервере.
Сверяем выгрузку с источником на выборке, проверяем поведение при обрыве и повторном запуске, передаём репозиторий, доступы и инструкцию.
Стек
Инструменты выбираем под источник: Telegram — клиентские библиотеки, веб — асинхронный обход, хранение — PostgreSQL, блокировки запусков — Redis, доставка — Docker.
Проект целиком стоит 45 000 – 70 000 ₽ и занимает 12–14 рабочих дней, оплата 30/70. Место в вилке определяют число источников, сложность обхода и авторизации, объём истории и количество полей в интерфейсе. Точную сумму называем после короткого созвона, до начала работы.
Сборщик заметит это сам: число записей просядет или разбор перестанет находить поле — придёт уведомление. Правила разбора версионируются, сырые ответы сохраняются, поэтому чаще всего достаточно поправить селектор и переразобрать собранное. Изменение на стороне площадки не является ошибкой реализации и в гарантию не входит.
Публичные карточки, цены и наличие — да, это данные, которые видит любой посетитель. Частоту запросов держим в рамках ограничений площадки, а где есть официальный API — берём данные из него. Обходить платный доступ или работать через чужие аккаунты не будем.
Только публично опубликованные контакты и только когда у вас есть законное основание их обрабатывать — оно фиксируется в договоре. Массовый сбор персональных данных для рассылок без согласия людей мы не делаем.
Вам. Репозиторий и сервер заводятся на вашей стороне, права на код передаются по договору, база живёт у вас. Мы не храним ваши данные у себя и не берём плату за доступ к собранному.
Контакты
Разберём источники, назовём сумму в пределах вилки и срок. Если задача решается официальным API площадки — скажем прямо. maincode — студия ИП Диденко М. С.
Дальше
Парсинг заканчивается там, где данные уже лежат в базе. Что делать с ними дальше — соседние услуги.
Смежная услуга
Собранное нужно на чём-то считать: витрины, ETL и отчёты, которые не заставляют ждать сорок минут.
Смежная услуга
Когда результат должен приходить людям в чат: уведомления о цене, поиск по базе командой, приём заявок.
Смежная услуга
Если данные должны попадать не в Excel, а в 1С, CRM или ваш backend — с гарантией доставки и журналом обмена.
Если ваша задача другая — опишите её, скажем, что из этого нужно, а что нет. Как выглядит инструмент вокруг собственных данных, видно в разборе движка распределения товара.