mirror of
https://github.com/ada-dmitry/osint_parser_ada.git
synced 2026-09-24 01:10:20 +00:00
feat: Add data models for disciplinary actions, organizations, and training centers
- Implemented DisciplinaryAction model for tracking disciplinary measures. - Created Organization model to represent auditing organizations with relevant details. - Developed TrainingCenter model for educational and methodological centers. - Added methods to convert models to dictionaries for easy export. feat: Implement parsers for auditors and organizations - Developed AuditorsParser to scrape and parse auditor registry data. - Created OrganizationsParser for scraping auditing organizations' registry. - Implemented GenericRegistryParser for handling generic tabular data. chore: Set up base parser functionality - Established BaseParser class with common methods for making requests and parsing HTML. - Added pagination handling and detailed page parsing capabilities. feat: Implement Excel export functionality - Created ExcelExporter class for exporting data to Excel files with formatting options. - Added support for exporting multiple sheets and organization data specifically. chore: Add logging utilities - Implemented setup_logger function for consistent logging across the application. - Configured logging to output to both console and file. chore: Update requirements and scripts - Added necessary dependencies for parsing, Excel handling, and logging. - Created run.sh and run.fish scripts for easy execution of the parser.
This commit is contained in:
@@ -0,0 +1,136 @@
|
||||
# Парсер реестров СРО ААС
|
||||
|
||||
Автоматизированный инструмент для сбора данных из реестров Саморегулируемой организации аудиторов Ассоциация «Содружество» (СРО ААС).
|
||||
|
||||
## Возможности
|
||||
|
||||
- Парсинг всех 14 официальных реестров СРО ААС
|
||||
- Два режима работы: быстрое сканирование (первая страница) и полное сканирование (все страницы)
|
||||
- Экспорт данных в формат Excel (.xlsx) с форматированием
|
||||
- Система логирования и обработки ошибок
|
||||
- Поддержка пагинации и повторных попыток при сбоях
|
||||
|
||||
## Поддерживаемые реестры
|
||||
|
||||
**Действующие члены:**
|
||||
1. Реестр аудиторов и индивидуальных аудиторов (14,691+ записей)
|
||||
2. Реестр аудиторских организаций (256+ записей)
|
||||
3. Реестр квалификационных аттестатов
|
||||
4. Перечень индивидуальных аудиторов
|
||||
5. Реестр учебно-методических центров
|
||||
6. Сведения о подтверждении ОППК
|
||||
7. Сведения о прохождении ПК руководителем аудита ОЗО ФР
|
||||
|
||||
**Исключенные члены:**
|
||||
8. Аудиторы, прекратившие членство
|
||||
9. Аудиторские организации, прекратившие членство
|
||||
10. Аннулированные квалификационные аттестаты
|
||||
11. УМЦ, исключенные из реестра
|
||||
|
||||
**Дисциплинарные меры:**
|
||||
12. Меры воздействия к аудиторам
|
||||
13. Меры воздействия к организациям
|
||||
|
||||
**Сети:**
|
||||
14. Российские и международные сети аудиторских организаций
|
||||
|
||||
## Установка
|
||||
|
||||
```bash
|
||||
# Клонирование репозитория
|
||||
git clone <repository-url>
|
||||
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)
|
||||
Reference in New Issue
Block a user