Збір даних
Як Sentry Analytics збирає та обробляє дані з багатьох джерел.
📊 Джерела даних
| Джерело | Тип даних | Метод | Частота оновлення |
|---|---|---|---|
| Kununu | Відгуки співробітників | Web scraping | За запитом |
| Відгуки про компанії | Places API | За запитом | |
| Обговорення | Reddit API | За запитом | |
| Indeed | Вакансії | Web scraping | За запитом |
🔧 Архітектура Scraping'у
User Request → Smart Search → Scraping Queue → 4 Parallel Jobs → Database
↓
┌─────────┴─────────┐
↓ ↓ ↓ ↓
Kununu Google Reddit Indeed
↓ ↓ ↓ ↓
└─────────┬─────────┘
↓
Sentiment Analysis (AI)
↓
Topic Extraction (ABSA)
↓
Trust Score Calculation
1. Kununu Scraper
Призначення: Відгуки співробітників з регіону DACH
Зібрані дані
- Заголовок та текст відгуку
- Рейтинг (1-5 зірок)
- Переваги та недоліки
- Посада та місцезнаходження
- Дата відгуку
Технологія
- Selenium with undetected-chromedriver
- Анти-бот: затримки, ротація user-agent'ів
- Швидкість: ~100 відгуків/хвилину
2. Відгуки Google
Призначення: Відгуки клієнтів/роботодавців з Google Maps
Зібрані дані
- Ім'я автора відгуку
- Рейтинг (1-5 зірок)
- Текст відгуку
- Дата
Технологія
- Google Places API (official)
- Швидкість: 50 запитів/день (безкоштовний рівень)
- Кешується 24 години
3. Reddit Scraper
Призначення: Обговорення компаній та настрої
Зібрані дані
- Заголовок та текст допису
- Коментарі
- Upvotes/бали
- Джерело Subreddit'у
- Дата
Subreddit'и
- r/jobs, r/careerguidance
- r/cscareerquestions
- r/germany (компанії DACH)
Технологія
- PRAW (Python Reddit API)
- Аутентифікація OAuth2
- Швидкість: 60 запитів/хвилину
4. Вакансії Indeed
Призначення: Відстеження вакансій для аналізу плинності кадрів
Зібрані дані
- Назва посади
- Місцезнаходження
- Діапазон заробітної плати
- Дата публікації
Технологія
- Selenium scraping
- Швидкість: ~50 вакансій/хвилину
📦 Magic Search
Аналіз в один клік створює 4 завдання scraping'у:
POST /api/scraping/magic-search
{
"company_name": "BMW",
"country": "de"
}
Відповідь:
{
"status": "scraping_started",
"jobs_started": 4,
"message": "🚀 Аналіз розпочато!"
}
🔄 Управління завданнями
Статуси завдань
| Статус | Значення |
|---|---|
pending | У черзі |
running | Зараз виконується scraping |
completed | Завершено |
failed | Виникла помилка |
cancelled | Зупинено вручну |
Моніторинг завдань
GET /api/scraping/jobs/JOB_ID
# Response
{
"status": "running",
"reviews_collected": 156,
"progress_percent": 78
}
⚡ Постобробка
Після завершення scraping'у:
- Дедуплікація - Видалення дублікатів
- Sentiment Analysis - AI categorization (Gemini 2.5)
- Topic Extraction - ABSA for aspects
- Trust Score - Перерахунок
- Оновлення View'ів - Оновлення матеріалізованих view'ів
🤖 Етичний Scraping
Ми впроваджуємо відповідальний збір даних:
- ✅ Шанобливі затримки (1-5 секунд)
- ✅ Ротація user-agent'ів
- ✅ Відповідність обмеженням швидкості запитів
- ✅ Експоненційна витримка при помилках
- ✅ Дотримання Robots.txt
Збір даних запускається за запитом через Smart Search або API.