154 lines
5.4 KiB
Markdown
154 lines
5.4 KiB
Markdown
|
|
# Парсер данных об отелях 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
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|