Skip to content

ada-dmitry/osint_parser_ada

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

📋 Парсер реестров СРО ААС

Это Python-приложение для автоматизированного сбора данных из 14 официальных реестров Саморегулируемой организации аудиторов Ассоциация «Содружество» (СРО ААС). Проект реализует веб-скрейпинг с поддержкой пагинации, обработкой ошибок и экспортом в Excel.

🎯 Основные возможности

  • 14 реестров — полное покрытие всех публичных реестров СРО ААС
  • Два режима парсинга:
    • 🚀 Быстрый (первая страница, ~50 записей, 1-2 сек)
    • 🔍 Полный (все страницы с пагинацией, тысячи записей, несколько минут)
  • Экспорт в Excel — автоматическое форматирование, заголовки, стилизация
  • Логирование — подробные логи всех операций в logs/
  • Обработка ошибок — повторные попытки (3x) при сбоях сети
  • CLI-интерфейс — интерактивное меню для выбора реестра
  • Режим Cron — автоматизация парсинга через аргументы командной строки
  • Неинтерактивный режим — для запуска по расписанию без пользовательского ввода

📊 Поддерживаемые реестры

Действующие члены (7 реестров):

  1. Реестр аудиторов и индивидуальных аудиторов (14,691+ записей)
  2. Реестр аудиторских организаций (256+ записей)
  3. Квалификационные аттестаты
  4. Индивидуальные аудиторы
  5. Учебно-методические центры
  6. Подтверждение ОППК
  7. Прохождение ПК руководителем аудита ОЗО ФР

Исключенные члены (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

Режим командной строки (для Cron)

Просмотр доступных реестров:

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, certificates
  • individual_auditors, training_centers, oppk_confirmation, ozo_training
  • excluded_auditors, excluded_organizations, cancelled_certificates, excluded_training_centers
  • disciplinary_auditors, disciplinary_organizations
  • audit_networks

Режимы (--mode):

  • quick — быстрый (первая страница, ~50 записей)
  • full — полный (все страницы)

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

Примеры 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

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published