mirror of
https://github.com/ada-dmitry/osint_parser_ada.git
synced 2026-09-24 01:10:20 +00:00
210 lines
9.1 KiB
Markdown
210 lines
9.1 KiB
Markdown
# 📋 Парсер реестров СРО ААС
|
|
|
|
Это 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. Российские и международные сети аудиторских организаций
|
|
|
|
## 🚀 Быстрый старт
|
|
|
|
### Установка
|
|
|
|
```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
|
|
# Выбор реестра из меню → выбор режима (y/n)
|
|
```
|
|
|
|
**Через скрипт (Fish Shell):**
|
|
```bash
|
|
./run.fish
|
|
```
|
|
|
|
### Режим командной строки (для Cron)
|
|
|
|
**Просмотр доступных реестров:**
|
|
```bash
|
|
python main.py --list
|
|
```
|
|
|
|
**Запуск парсинга без интерактивного режима:**
|
|
```bash
|
|
# Быстрый парсинг аудиторов
|
|
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`.
|
|
|
|
**Настройка автоматического парсинга:**
|
|
|
|
```bash
|
|
# Открыть редактор 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
|
|
```
|
|
|
|
**Просмотр логов:**
|
|
```bash
|
|
tail -f logs/cron_auditors.log
|
|
```
|
|
|
|
📖 **Подробное руководство:** См. [CRON_GUIDE.md](CRON_GUIDE.md) для детальных инструкций по настройке автоматизации.
|
|
|
|
### Использование
|
|
|
|
**Выбор режима парсинга:**
|
|
- `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-интерфейс с поддержкой 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`:
|
|
|
|
```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)
|