Это Python-приложение для автоматизированного сбора данных из 14 официальных реестров Саморегулируемой организации аудиторов Ассоциация «Содружество» (СРО ААС). Проект реализует веб-скрейпинг с поддержкой пагинации, обработкой ошибок и экспортом в Excel.
- 14 реестров — полное покрытие всех публичных реестров СРО ААС
- Два режима парсинга:
- 🚀 Быстрый (первая страница, ~50 записей, 1-2 сек)
- 🔍 Полный (все страницы с пагинацией, тысячи записей, несколько минут)
- Экспорт в Excel — автоматическое форматирование, заголовки, стилизация
- Логирование — подробные логи всех операций в
logs/ - Обработка ошибок — повторные попытки (3x) при сбоях сети
- CLI-интерфейс — интерактивное меню для выбора реестра
- Режим Cron — автоматизация парсинга через аргументы командной строки
- Неинтерактивный режим — для запуска по расписанию без пользовательского ввода
Действующие члены (7 реестров):
- Реестр аудиторов и индивидуальных аудиторов (14,691+ записей)
- Реестр аудиторских организаций (256+ записей)
- Квалификационные аттестаты
- Индивидуальные аудиторы
- Учебно-методические центры
- Подтверждение ОППК
- Прохождение ПК руководителем аудита ОЗО ФР
Исключенные члены (4 реестра): 8. Аудиторы, прекратившие членство 9. Аудиторские организации, прекратившие членство 10. Аннулированные аттестаты 11. Исключенные УМЦ
Дисциплинарные меры (2 реестра): 12. Меры воздействия к аудиторам 13. Меры воздействия к организациям
Сети (1 реестр): 14. Российские и международные сети аудиторских организаций
# Клонирование репозитория
git clone https://github.com/ada-dmitry/osint_parser_ada.git
cd osint_parser_ada
# Создание виртуального окружения
python -m venv venv
source venv/bin/activate # Linux/Mac
# или
venv\Scripts\activate # Windows
# Установка зависимостей
pip install -r requirements.txtИнтерактивный режим:
python main.py
# Выбор реестра из меню → выбор режима (y/n)Через скрипт (Fish Shell):
./run.fishПросмотр доступных реестров:
python main.py --listЗапуск парсинга без интерактивного режима:
# Быстрый парсинг аудиторов
python main.py --registry auditors --mode quick
# Полный парсинг организаций
python main.py --registry organizations --mode full
# Сокращенный синтаксис
python main.py -r certificates -m quickДоступные реестры для --registry:
auditors,organizations,certificatesindividual_auditors,training_centers,oppk_confirmation,ozo_trainingexcluded_auditors,excluded_organizations,cancelled_certificates,excluded_training_centersdisciplinary_auditors,disciplinary_organizationsaudit_networks
Режимы (--mode):
quick— быстрый (первая страница, ~50 записей)full— полный (все страницы)
Примеры cron записей находятся в файле cron_examples.sh.
Настройка автоматического парсинга:
# Открыть редактор cron
crontab -e
# Добавить задачу (парсинг аудиторов каждый день в 02:00)
0 2 * * * cd /path/to/osint_parser_ada && venv/bin/python main.py --registry auditors --mode quick >> logs/cron_auditors.log 2>&1
# Полный парсинг организаций каждое воскресенье в 01:00
0 1 * * 0 cd /path/to/osint_parser_ada && venv/bin/python main.py --registry organizations --mode full >> logs/cron_organizations_full.log 2>&1Просмотр логов:
tail -f logs/cron_auditors.log📖 Подробное руководство: См. CRON_GUIDE.md для детальных инструкций по настройке автоматизации.
Выбор режима парсинга:
n(No) — быстрое сканирование (только первая страница, ~50 записей, 1-2 сек)y(Yes) — полное сканирование (все страницы, все записи, несколько минут)
Программный режим:
from parsers.auditors_parser import AuditorsParser
from utils.excel_exporter import ExcelExporter
# Быстрое сканирование
parser = AuditorsParser()
data = parser.parse_registry(detailed=False) # Только первая страница
# Полное сканирование
data = parser.parse_registry(detailed=True) # Все страницы
# Экспорт в Excel
exporter = ExcelExporter()
exporter.export_to_excel(data, "auditors", "output.xlsx")osint_parser_ada/
├── config.py # Конфигурация и URL реестров
├── main.py # CLI-интерфейс с поддержкой Cron
├── run.fish / run.sh # Скрипты быстрого запуска
├── run_cron.fish # Скрипт для Cron (Fish Shell)
├── cron_examples.sh # Примеры Cron записей
├── CRON_GUIDE.md # Подробное руководство по Cron
├── parsers/ # Парсеры реестров
│ ├── base_parser.py # Базовый класс с пагинацией
│ ├── auditors_parser.py # Парсер аудиторов
│ ├── organizations_parser.py
│ └── generic_parser.py # Универсальный парсер
├── models/ # Модели данных
│ ├── organization.py
│ ├── auditor.py
│ └── ...
├── utils/ # Утилиты
│ ├── logger.py # Логирование
│ └── excel_exporter.py # Экспорт в Excel
└── data/exports/ # Экспортированные файлы
- Python: 3.8+
- Зависимости: requests, beautifulsoup4, lxml, pandas, openpyxl
- Архитектура: Паттерн Template Method, модульная структура
- Режимы работы: Интерактивный CLI и неинтерактивный (Cron)
- Обработка ошибок: Повторные попытки (3x), логирование всех операций
- Производительность: ~1.5 сек/страница с задержками для защиты от блокировки
Основные настройки в config.py:
PARSER_CONFIG = {
"user_agent": "Mozilla/5.0...",
"timeout": 30, # Таймаут запроса (сек)
"delay_between_requests": 1, # Задержка между запросами (сек)
"max_retries": 3 # Максимум повторных попыток
}Логи сохраняются в logs/parser_YYYY-MM-DD.log:
- INFO: Прогресс парсинга, количество найденных записей
- WARNING: Пропущенные страницы, проблемы с данными
- ERROR: Критические ошибки запросов
Источник данных: https://sroaas.ru