Автоматизация
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, благодаря чему результаты работы задач сохраняются при перезапуске контейнеров.