Проект аудита отелей: основные скрипты и документация

- Краулеры: smart_crawler.py, regional_crawler.py
- Аудит: audit_orel_to_excel.py, audit_chukotka_to_excel.py
- РКН проверка: check_rkn_registry.py, recheck_unclear_rkn.py
- Отчёты: create_orel_horizontal_report.py
- Обработка: process_all_hotels_embeddings.py
- Документация: README.md, DB_SCHEMA_REFERENCE.md
This commit is contained in:
Фёдор
2025-10-16 10:52:09 +03:00
parent 545e199389
commit 0cf3297290
105 changed files with 28743 additions and 0 deletions

153
README.md Normal file
View File

@@ -0,0 +1,153 @@
# Парсер данных об отелях 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 данных
```
## 🚀 Использование
### Проверить прогресс парсинга
```bash
cd /root/engine/public_oversight/hotels
./check_progress.sh
```
### Подключение к базе данных
```python
import psycopg2
conn = psycopg2.connect(
host="147.45.189.234",
port=5432,
database="default_db",
user="gen_user",
password="2~~9_^kVsU?2\S"
)
```
### Примеры запросов
```sql
-- Все отели в Краснодарском крае
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 для безопасного перезапуска
## 📞 Контакты и источники
- Источник данных: https://tourism.fsa.gov.ru
- API Base: https://tourism.fsa.gov.ru/api/v1
- Реестр: Федеральное агентство по туризму РФ
- Дата сбора: 2025-10-10