Skip to content
This repository has been archived by the owner on Feb 23, 2023. It is now read-only.

Homyakin/ZakupkiParser

Repository files navigation

ZakupkiParser

Парсер для http://zakupki.gov.ru/

На данный момент реализована выгрузка планов закупки, договоров и извещений о закупке с ftp сервера.

Инструкция по запуску (убедитесь, что используете ветку master)

Разработка ведется на Java 17. (Я использую данный JDK)

Настройка базы данных

В данной программе используется база данных MySQL и есть два способа ее настройки:

  1. Стандартный
  2. Docker

1. Стандартный способ

Устанавливаем базу данных MySQL обычным способом. В интернете есть много инструкций для этого.

ВАЖНО! Пароль для пользователя root должен быть 12345.
В противном случае заходим в файл src/main/resources/application.yml и меняем 12345 на свой пароль.
Также пароль нобходимо сменить в файле open_data/insert_from_file.py

После установки необходимо подключиться к базе данных и выполнить скрипт из файла database/docker/sql/create_db.sql

2. Docker (только для тех, кто знает что это)

Заходим в папку database/docker и запускаем файл docker.sh.

Табличные данные

Перед парсингом необходимо заполнить базу данных табличными данными. Для этого переходим в папку open_data/ и запускаем скрипт insert_all.py. Вам понадобится библиотека pymysql

Запуск парсера


Открываем проект в вашей среде разработки (Я рекомендую IntelliJ IDEA от Jetbrains) и настраиваем проект Maven (IntelliJ IDEA скорее всего сделает это самостоятельно при открытие папки с проектом).
Все что вам остается это зайти в src/main/java/ru/homyakin/zakupki/Application.java и запустить программу.
Вы можете выбрать какие именно папки и регионы вам нужны перед началом загрузки, а также выбрать промежуток времени. ВАЖНО время файла определяется по его последнему изменению, поэтому в выгрузке за 2020 год могут оказаться файлы, созданные в 2019 году.

Скорость работы

Алгоритм программы устроен так, что лучше выгружать несколько папок или регионов одновременно, так как в этом случае имеется возможность параллельной обработки данных. Одну папку в рамках одного региона можно обрабатывать исключительно последовательного.
В application.yml можно указать сколько одновременно папок можно обрабатывать, по-умолчанию - 15.