Услуга · сбор данных · от 12 рабочих дней

Парсинг данных под ключ: сбор, хранение и выгрузка в Excel

Не скрипт, который сломается через неделю, а сервис: сборщик, база и веб-интерфейс с фильтрами. Работает по расписанию и сам сообщает, когда источник изменился.

  • 45 000 – 70 000 ₽
  • 12–14 рабочих дней
  • оплата 30/70

Опишите, что нужно собрать

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

Что вы получите

Три артефакта вместо папки с файлами

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

Сборщик

Асинхронный обход с очередью задач: параллельные запросы, таймауты, ограничение скорости под каждую площадку и повтор упавших страниц с нарастающей паузой. Правила разбора вынесены из кода в конфигурацию — селектор правится без пересборки образа.

Python · asyncio · запуск по расписанию

База

PostgreSQL как источник истины: схема под ваши сущности, ключ дедупликации, история значений и отметка запуска у каждой записи. Схема меняется миграциями — неудачное изменение откатывается одной командой.

PostgreSQL · миграции · история значений

Веб-интерфейс

Фильтры по любому полю, поиск, сортировка, журнал запусков и выгрузка текущего фильтра в CSV или Excel. Тот же принцип — «что отфильтровал, то и выгрузил» — мы реализовали в операторской панели движка распределения товара.

CSV · XLSX · журнал запусков

Источники

Что собираем

Четыре типа источников, у каждого своя механика обхода. Смешивать их в одном проекте можно: база и интерфейс общие.

01

Telegram-каналы и чаты

Сообщения, авторы, реакции и вложения из открытых каналов и групп. Читаем клиентскими библиотеками, а не веб-версией.

  • история канала с указанной даты
  • дозабор только новых сообщений
  • фильтр по ключевым словам
02

Сайты и каталоги

Карточки товаров, объявления, вакансии, публикации. Пагинация, вложенные страницы, подгрузка по прокрутке.

  • обход по карте сайта или пагинации
  • поля берутся из конфигурации
  • исходный HTML сохраняется
03

Маркетплейсы

Публичные карточки, цены и наличие на Ozon и Wildberries. Где у площадки есть официальный API — берём данные из него.

  • снимок цен по расписанию
  • история цены у карточки
  • сравнение ассортимента с чужим
04

Справочники и каталоги

Отраслевые справочники, прайс-листы поставщиков, публичные реестры — обычно разово, но большим объёмом.

  • нормализация названий и адресов
  • склейка дублей по ключу
  • разовая выгрузка или обновление

Устойчивость

Почему это не встанет через неделю

Парсер живёт в чужой среде, которая меняется без предупреждения. Ниже — то, что закладываем по умолчанию, а не за отдельные деньги.

Повторы и таймауты

Запрос ограничен по времени, упавший повторяется с нарастающей паузой. Не поднявшаяся страница уходит в очередь неудач и не роняет весь запуск.

Ротация прокси

Пул адресов и пользовательских агентов, ограничение частоты запросов на домен: цель — не создавать площадке нагрузку.

Расписание

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

Алерт при падении

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

Версии правил разбора

Правила лежат в репозитории и версионируются: у каждой записи видно, какой версией она собрана.

Хранение сырых ответов

Исходный ответ площадки сохраняется: неправильно разобранное поле переразбирают из сохранённого, без повторного обхода источника.

Правовая рамка

Что мы собираем, а что не будем

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

Только публично доступные данные

Работаем с тем, что открыто любому посетителю без авторизации и без обхода платного доступа. Нужен чужой логин или снятие технического ограничения — это не наша задача.

Уважаем robots.txt и ограничения площадок

Читаем robots.txt и придерживаемся его, ограничиваем частоту запросов. Где есть официальный API или открытая выгрузка — берём их, а не обходим интерфейс.

Персональные данные — только при законном основании

Имена, телефоны, адреса и профили собираем, когда у заказчика есть законное основание их обрабатывать и он готов зафиксировать это в договоре. Ответственность за дальнейшую обработку — на его стороне.

При сомнениях в законности отказываемся

Если задача выглядит как сбор закрытой информации, обход защиты или массовый сбор контактов для рассылок без согласия людей — говорим сразу и не берёмся.

Цена и срок

45 000 – 70 000 ₽ за проект целиком

Цена открытая: в вилку входит вся поставка, а не только код сборщика.

Стоимость проекта45 000 – 70 000 ₽

12–14 рабочих дней от согласованного списка полей до приёмки, оплата 30/70 — на старте и после приёмки. Место в вилке определяют число источников, сложность обхода и авторизации, объём истории при первом заполнении базы и число полей в интерфейсе. Точную сумму называем после короткого созвона, до начала работы. Две недели после приёмки действует гарантия: ошибки реализации по техническому заданию исправляем бесплатно.

Информация на сайте не является публичной офертой. Стоимость и сроки фиксируются в договоре после согласования состава работ. Гарантия распространяется на ошибки реализации по техническому заданию и не покрывает изменения на стороне источника — их разбираем отдельно.

Порядок работы

Четыре этапа от списка полей до приёмки

Каждый этап заканчивается тем, что можно посмотреть и проверить.

01

Согласование источников и полей

Смотрим источники вместе: что доступно без авторизации, как устроена навигация, какие поля нужны и в каком виде. Итог фиксируется письменно — дальше объём работы не предмет спора.

на выходесписок источников и полей

02

Сборщик

Пишем обход и разбор, настраиваем повторы, ограничение скорости и расписание. Первую партию данных показываем до интерфейса: на ней видно, те ли это поля.

на выходепервая партия данных

03

База и интерфейс

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

на выходеработающий сервис

04

Приёмка

Сверяем выгрузку с источником на выборке, проверяем поведение при обрыве и повторном запуске, передаём репозиторий, доступы и инструкцию.

на выходерепозиторий и доступы

Стек

На чём делаем

Инструменты выбираем под источник: Telegram — клиентские библиотеки, веб — асинхронный обход, хранение — PostgreSQL, блокировки запусков — Redis, доставка — Docker.

  • Python
  • Telethon
  • Pyrogram
  • PostgreSQL
  • Redis
  • Docker
  • excelize / openpyxl

FAQ

Частые вопросы

Не нашли ответ — напишите, разберёмся по вашей задаче.

Сколько стоит парсер и от чего зависит цена?

Проект целиком стоит 45 000 – 70 000 ₽ и занимает 12–14 рабочих дней, оплата 30/70. Место в вилке определяют число источников, сложность обхода и авторизации, объём истории и количество полей в интерфейсе. Точную сумму называем после короткого созвона, до начала работы.

Что будет, когда источник поменяет вёрстку?

Сборщик заметит это сам: число записей просядет или разбор перестанет находить поле — придёт уведомление. Правила разбора версионируются, сырые ответы сохраняются, поэтому чаще всего достаточно поправить селектор и переразобрать собранное. Изменение на стороне площадки не является ошибкой реализации и в гарантию не входит.

Можно ли собирать данные с Ozon и Wildberries?

Публичные карточки, цены и наличие — да, это данные, которые видит любой посетитель. Частоту запросов держим в рамках ограничений площадки, а где есть официальный API — берём данные из него. Обходить платный доступ или работать через чужие аккаунты не будем.

Соберёте базу контактов?

Только публично опубликованные контакты и только когда у вас есть законное основание их обрабатывать — оно фиксируется в договоре. Массовый сбор персональных данных для рассылок без согласия людей мы не делаем.

Кому принадлежат код и собранные данные?

Вам. Репозиторий и сервер заводятся на вашей стороне, права на код передаются по договору, база живёт у вас. Мы не храним ваши данные у себя и не берём плату за доступ к собранному.

Контакты

Пришлите ссылки на источники — скажем, что реально собрать

Разберём источники, назовём сумму в пределах вилки и срок. Если задача решается официальным API площадки — скажем прямо. maincode — студия ИП Диденко М. С.

Дальше

Если задача шире сбора данных

Парсинг заканчивается там, где данные уже лежат в базе. Что делать с ними дальше — соседние услуги.

Если ваша задача другая — опишите её, скажем, что из этого нужно, а что нет. Как выглядит инструмент вокруг собственных данных, видно в разборе движка распределения товара.