mirror of
https://github.com/ada-dmitry/osint_parser_ada.git
synced 2026-09-24 01:10:20 +00:00
feat: Обновить README и архитектуру проекта, добавить поддержку режима cron и улучшить интерфейс командной строки
This commit is contained in:
@@ -1,40 +1,47 @@
|
||||
# Парсер реестров СРО ААС
|
||||
# 📋 Парсер реестров СРО ААС
|
||||
|
||||
Автоматизированный инструмент для сбора данных из реестров Саморегулируемой организации аудиторов Ассоциация «Содружество» (СРО ААС).
|
||||
Это Python-приложение для автоматизированного сбора данных из 14 официальных реестров **Саморегулируемой организации аудиторов Ассоциация «Содружество»** (СРО ААС). Проект реализует веб-скрейпинг с поддержкой пагинации, обработкой ошибок и экспортом в Excel.
|
||||
|
||||
## Возможности
|
||||
## 🎯 Основные возможности
|
||||
|
||||
- Парсинг всех 14 официальных реестров СРО ААС
|
||||
- Два режима работы: быстрое сканирование (первая страница) и полное сканирование (все страницы)
|
||||
- Экспорт данных в формат Excel (.xlsx) с форматированием
|
||||
- Система логирования и обработки ошибок
|
||||
- Поддержка пагинации и повторных попыток при сбоях
|
||||
- **14 реестров** — полное покрытие всех публичных реестров СРО ААС
|
||||
- **Два режима парсинга:**
|
||||
- 🚀 **Быстрый** (первая страница, ~50 записей, 1-2 сек)
|
||||
- 🔍 **Полный** (все страницы с пагинацией, тысячи записей, несколько минут)
|
||||
- **Экспорт в Excel** — автоматическое форматирование, заголовки, стилизация
|
||||
- **Логирование** — подробные логи всех операций в `logs/`
|
||||
- **Обработка ошибок** — повторные попытки (3x) при сбоях сети
|
||||
- **CLI-интерфейс** — интерактивное меню для выбора реестра
|
||||
- **Режим Cron** — автоматизация парсинга через аргументы командной строки
|
||||
- **Неинтерактивный режим** — для запуска по расписанию без пользовательского ввода
|
||||
|
||||
## Поддерживаемые реестры
|
||||
## 📊 Поддерживаемые реестры
|
||||
|
||||
**Действующие члены:**
|
||||
**Действующие члены (7 реестров):**
|
||||
1. Реестр аудиторов и индивидуальных аудиторов (14,691+ записей)
|
||||
2. Реестр аудиторских организаций (256+ записей)
|
||||
3. Реестр квалификационных аттестатов
|
||||
4. Перечень индивидуальных аудиторов
|
||||
5. Реестр учебно-методических центров
|
||||
6. Сведения о подтверждении ОППК
|
||||
7. Сведения о прохождении ПК руководителем аудита ОЗО ФР
|
||||
3. Квалификационные аттестаты
|
||||
4. Индивидуальные аудиторы
|
||||
5. Учебно-методические центры
|
||||
6. Подтверждение ОППК
|
||||
7. Прохождение ПК руководителем аудита ОЗО ФР
|
||||
|
||||
**Исключенные члены:**
|
||||
**Исключенные члены (4 реестра):**
|
||||
8. Аудиторы, прекратившие членство
|
||||
9. Аудиторские организации, прекратившие членство
|
||||
10. Аннулированные квалификационные аттестаты
|
||||
11. УМЦ, исключенные из реестра
|
||||
10. Аннулированные аттестаты
|
||||
11. Исключенные УМЦ
|
||||
|
||||
**Дисциплинарные меры:**
|
||||
**Дисциплинарные меры (2 реестра):**
|
||||
12. Меры воздействия к аудиторам
|
||||
13. Меры воздействия к организациям
|
||||
|
||||
**Сети:**
|
||||
**Сети (1 реестр):**
|
||||
14. Российские и международные сети аудиторских организаций
|
||||
|
||||
## Установка
|
||||
## 🚀 Быстрый старт
|
||||
|
||||
### Установка
|
||||
|
||||
```bash
|
||||
# Клонирование репозитория
|
||||
@@ -51,19 +58,80 @@ 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
|
||||
@@ -81,12 +149,16 @@ exporter = ExcelExporter()
|
||||
exporter.export_to_excel(data, "auditors", "output.xlsx")
|
||||
```
|
||||
|
||||
## Структура проекта
|
||||
## 🏗️ Архитектура проекта
|
||||
|
||||
```
|
||||
osint_parser_ada/
|
||||
├── config.py # Конфигурация и URL реестров
|
||||
├── main.py # CLI-интерфейс
|
||||
├── 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 # Парсер аудиторов
|
||||
@@ -108,6 +180,7 @@ osint_parser_ada/
|
||||
- **Python:** 3.8+
|
||||
- **Зависимости:** requests, beautifulsoup4, lxml, pandas, openpyxl
|
||||
- **Архитектура:** Паттерн Template Method, модульная структура
|
||||
- **Режимы работы:** Интерактивный CLI и неинтерактивный (Cron)
|
||||
- **Обработка ошибок:** Повторные попытки (3x), логирование всех операций
|
||||
- **Производительность:** ~1.5 сек/страница с задержками для защиты от блокировки
|
||||
|
||||
|
||||
Reference in New Issue
Block a user