Автоматизация

Zakupki Parser

Скачивает документы с zakupki.gov.ru пакетом и отдаёт архив с Excel-отчётом.

Веб-интерфейс парсера закупок с прогрессом задачи.

Что решает проект

Zakupki Parser — специализированный веб-сервис для пакетной автоматизации сбора тендерной документации и извлечения метаданных с официального портала государственных закупок (zakupki.gov.ru).

Система избавляет специалистов от рутинного ручного скачивания сотен файлов по отдельности: на вход подаётся поисковая ссылка, текстовый список номеров дел или файл Excel с реестровыми записями, а на выходе формируется единый структурированный ZIP-архив с разложенными файлами и сводный отчёт в формате Excel.

Job-based архитектура фоновой обработки

Сервис спроектирован вокруг сущности задачи (job), изолирующей результаты каждого запуска: - Для каждой задачи создаётся изолированный каталог в файловой системе data/jobs/{job_id}/; - Внутри формируются папки с документами по конкретным карточкам, общая плоская коллекция файлов, архив archive.zip и итоговая таблица report.xlsx; - Веб-интерфейс на FastAPI и Jinja2 обеспечивает опрос статуса выполнения (polling раз в 4 секунды) и отдачу готовых файлов пользователю.

Интеллектуальная работа с Excel и точность данных

Парсер включает алгоритм автоопределения нужной колонки при импорте Excel-таблиц: - Автоматически находит заголовки, содержащие слово «реестр»; - При отсутствии совпадений применяет эвристический анализ, выбирая колонку с максимальным количеством длинных числовых записей; - Решена критическая проблема IEEE-754: 18–19-значные реестровые номера не могут быть сохранены как числовой float в Excel без искажения младших разрядов, поэтому парсер обеспечивает строгую текстовую обработку длинных идентификаторов.

Устойчивость к ошибкам входных данных

Некорректные или удалённые номера реестровых записей не прерывают выполнение всего пакета. Ошибочные записи помечаются статусом «не найдено», заносятся в сводную ведомость и не расходуют общий лимит успешно извлекаемых карточек.

Ограничение нагрузки и обход гео-блокировок

Для стабильной интеграции с государственным порталом реализован «вежливый» режим взаимодействия: - Соблюдение задержек между запросами и учёт директивы Crawl-delay; - Настраиваемый лимит карточек на одно пакетное задание; - Поддержка переменной конфигурации UPSTREAM_PROXY: возможность маршрутизации запросов через HTTP/SOCKS5-прокси с российским IP-адресом для гарантированного доступа к порталу из внешних сетей.

Контейнеризация и надёжность

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