mirror of
https://github.com/ada-dmitry/osint_parser_ada.git
synced 2026-09-24 09:20:21 +00:00
4.2 KiB
4.2 KiB
Архитектура проекта
Ниже — схема на уровне компонентов в формате, аналогичном примеру.
[CLI (main.py / run.fish / run.sh / run_cron.fish)]
|
v
Fetcher — загрузка HTML и проверка кода ответа
[Fetcher: HTTP GET (requests.Session)]
(timeout / retries / delay)
|
v
• Parser — извлечение таблиц/списков и распознавание колонок (BS4+lxml)
• Normalizer — очистка значений, trim, удаление префиксов, приведение типов/дат
• Model — маппинг в dataclasses (Auditor, Organization, …)
• Exporter — выгрузка pandas.DataFrame в Excel через openpyxl
|
v
[Pipeline]
[Parser (BeautifulSoup + эвристики)] --> [Normalizer] --> [Model] --> [DataFrame] --> [Exporter (XLSX)]
Соответствие компонент файлам
-
CLI / запуск:
main.py— CLI-меню, режим неинтерактивного запуска через аргументы (--registry,--mode,--list).run.fish,run.sh— быстрый старт;run_cron.fish— обёртка для cron (Fish).
-
Fetcher:
parsers/base_parser.py→BaseParser._make_request()(requests.Session, заголовок User-Agent, таймаут, задержка, повторные попытки).- Пагинация:
BaseParser._get_pagination_urls().
-
Parser:
- Специализированные:
parsers/auditors_parser.py,parsers/organizations_parser.py. - Универсальный:
parsers/generic_parser.py(табличные реестры, автоматическое определение заголовков). - Общая точка входа:
BaseParser.parse_registry(detailed=...).
- Специализированные:
-
Normalizer:
- Локальные шаги очистки/приведения: обрезка пробелов, извлечение чисел/дат, нормализация полей (внутри парсеров).
- Приведение к словарям/рубрикам, единообразные ключи для экспорта.
-
Model:
models/auditor.py,models/organization.py, и др. — dataclasses, методto_dict()для экспорта.
-
DataFrame + Exporter:
- Формирование
pandas.DataFrameи экспорт:utils/excel_exporter.py→ExcelExporter.export_to_excel(). - Форматирование XLSX (ширина колонок, шапка, стили):
ExcelExporter._format_excel().
- Формирование
-
Конфигурация и логирование:
config.py— URL реестров (REGISTRIES), сетевые и экспортные настройки (PARSER_CONFIG,EXPORT_CONFIG,LOGGING_CONFIG).utils/logger.py— консольный и файловый логгеры (logs/parser_YYYY-MM-DD.log).
Потоки выполнения
-
Режим запуска:
- Интерактивный CLI: выбор реестра и детализации из меню (
main.py). - Неинтерактивный (для cron):
python main.py --registry <key> --mode <quick|full>.
- Интерактивный CLI: выбор реестра и детализации из меню (
-
Детализация:
mode=quick— первая страница (без обхода пагинации и детальных карточек).mode=full— все страницы (пагинация) и, при поддержке, парсинг детальных карточек записей.
-
Надёжность:
- Повторные попытки при ошибках сети, управляемая задержка между запросами.
- Логи INFO/DEBUG в консоль и файл.
-
Выходные данные:
- Сырые записи → нормализованные словари → модели (dataclasses) →
pandas.DataFrame→ XLSX вdata/exports/.
- Сырые записи → нормализованные словари → модели (dataclasses) →