Фёдор 85d7729cbb 📝 Добавлен лог сессии по созданию PDF отчётов
- Детальное описание процесса создания PDF генератора
- Решение проблемы с кириллицей (Helvetica → DejaVu)
- Статистика по Орловской области
- Технические детали и дизайн
- Выводы и рекомендации
2025-10-28 00:41:46 +03:00
2025-10-16 10:51:57 +03:00

Парсер данных об отелях tourism.fsa.gov.ru

Полный сбор данных о 33,773 средствах размещения из реестра Федерального агентства по туризму.

📊 Статус

Этап 1: Базовые данные ЗАВЕРШЁН

  • 33,773 отелей загружено
  • Время: 4 минуты
  • Таблица: hotel_main

Этап 2: Детальные данные ⚙️ В ПРОЦЕССЕ

  • Запущен: 2025-10-10 23:53
  • Ожидаемое завершение: ~07:24
  • Осталось: ~7 часов

📁 Структура базы данных

hotel_main                 -- Основная информация (33,773 записей)
├── id (UUID)
├── full_name, short_name
├── status, category (звёздность)
├── region, addresses
├── owner_ogrn, owner_inn
├── phone, email, website
└── photo_ids

hotel_additional_info      -- Дополнительная информация о владельце
hotel_sanatorium          -- Инфраструктура санаториев (бассейн, пляж, лицензии)
hotel_services            -- Детальные услуги (оборудование, сервисы)
hotel_rooms               -- Номерной фонд (категории, количество, оборудование)
hotel_raw_json            -- Backup сырых JSON данных

🚀 Использование

Проверить прогресс парсинга

cd /root/engine/public_oversight/hotels
./check_progress.sh

Подключение к базе данных

import psycopg2

conn = psycopg2.connect(
    host="147.45.189.234",
    port=5432,
    database="default_db",
    user="gen_user",
    password="2~~9_^kVsU?2\S"
)

Примеры запросов

-- Все отели в Краснодарском крае
SELECT full_name, category_name, phone, email 
FROM hotel_main 
WHERE region_name = 'Краснодарский край';

-- Отели 5 звёзд с контактами
SELECT full_name, website_address, phone, email
FROM hotel_main 
WHERE category_name = 'пять звезд' 
  AND (phone IS NOT NULL OR email IS NOT NULL);

-- Санатории с бассейнами
SELECT m.full_name, s.swimming_pool_info
FROM hotel_main m
JOIN hotel_sanatorium s ON m.id = s.hotel_id
WHERE s.swimming_pool_info->>'availability' = 'true';

-- Услуги конкретного отеля
SELECT service_category_name, service_name
FROM hotel_services
WHERE hotel_id = 'bd2035e9-2dff-4871-b1f1-91ef1eaee7f3';

📈 Статистика

География (топ-10)

  1. Краснодарский край - 4,193
  2. Москва - 3,078
  3. Московская область - 1,721
  4. Санкт-Петербург - 1,646
  5. Республика Крым - 1,487
  6. Республика Алтай - 834
  7. Ростовская область - 793
  8. Республика Татарстан - 747
  9. Ставропольский край - 702
  10. Республика Башкортостан - 683

Типы средств размещения

  • Гостиница: 27,147 (80.4%)
  • База отдыха: 4,729 (14.0%)
  • Санаторий: 1,178 (3.5%)
  • Кемпинг: 552 (1.6%)
  • Гостевой дом: 167 (0.5%)

Звёздность

  • Без категории: 22,657 (67.1%)
  • Три звезды: 5,437 (16.1%)
  • Четыре звезды: 2,290 (6.8%)
  • Две звезды: 2,294 (6.8%)
  • Пять звёзд: 432 (1.3%)
  • Одна звезда: 663 (2.0%)

🔧 Техническая информация

API Endpoints

  • /api/v1/resorts/hotels/showcase - список отелей
  • /api/v1/resorts/hotels/{id}/main - основная информация
  • /api/v1/resorts/common/{id}/additional-info - дополнительная информация
  • /api/v1/resorts/hotels/{id}/sanatoriumDrawer - санаторная информация
  • /api/v1/resorts/hotels/{id}/drawer - детальные услуги

Скрипты

  • scraper_safe.py - сбор базовых данных (showcase)
  • scraper_detailed.py - сбор детальной информации (4 endpoint'а на отель)
  • check_progress.sh - мониторинг прогресса
  • create_tables.py - создание схемы БД
  • check_db.py - проверка подключения к БД

Логи

  • scraper_YYYYMMDD_HHMMSS.log - лог базового парсинга
  • scraper_detailed_YYYYMMDD_HHMMSS.log - лог детального парсинга
  • full_scrape.log - вывод базового парсинга
  • detailed_scrape.log - вывод детального парсинга

⚠️ Важно

  • Rate limiting: 10 запросов/сек (RATE_LIMIT_DELAY = 0.1)
  • Checkpoint каждые 1000 отелей
  • Batch INSERT по 100 записей
  • Автоматическое восстановление при сбоях
  • ON CONFLICT для безопасного перезапуска

📞 Контакты и источники

Description
Hotels RAG & Audit System - Vector search and compliance auditing for Russian hotels
Readme 784 KiB
Languages
Python 96.5%
JavaScript 2.2%
Shell 1.3%