Files
osint_parser_ada/README.md
T

137 lines
5.7 KiB
Markdown

# Парсер реестров СРО ААС
Автоматизированный инструмент для сбора данных из реестров Саморегулируемой организации аудиторов Ассоциация «Содружество» (СРО ААС).
## Возможности
- Парсинг всех 14 официальных реестров СРО ААС
- Два режима работы: быстрое сканирование (первая страница) и полное сканирование (все страницы)
- Экспорт данных в формат Excel (.xlsx) с форматированием
- Система логирования и обработки ошибок
- Поддержка пагинации и повторных попыток при сбоях
## Поддерживаемые реестры
**Действующие члены:**
1. Реестр аудиторов и индивидуальных аудиторов (14,691+ записей)
2. Реестр аудиторских организаций (256+ записей)
3. Реестр квалификационных аттестатов
4. Перечень индивидуальных аудиторов
5. Реестр учебно-методических центров
6. Сведения о подтверждении ОППК
7. Сведения о прохождении ПК руководителем аудита ОЗО ФР
**Исключенные члены:**
8. Аудиторы, прекратившие членство
9. Аудиторские организации, прекратившие членство
10. Аннулированные квалификационные аттестаты
11. УМЦ, исключенные из реестра
**Дисциплинарные меры:**
12. Меры воздействия к аудиторам
13. Меры воздействия к организациям
**Сети:**
14. Российские и международные сети аудиторских организаций
## Установка
```bash
# Клонирование репозитория
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
```
## Использование
### Интерактивный режим
```bash
python main.py
```
Выберите реестр из меню и режим парсинга:
- `n` (No) — быстрое сканирование (только первая страница, ~50 записей, 1-2 сек)
- `y` (Yes) — полное сканирование (все страницы, все записи, несколько минут)
### Программный режим
```python
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-интерфейс
├── 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, модульная структура
- **Обработка ошибок:** Повторные попытки (3x), логирование всех операций
- **Производительность:** ~1.5 сек/страница с задержками для защиты от блокировки
## Конфигурация
Основные настройки в `config.py`:
```python
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](https://sroaas.ru)