Перейти до основного вмісту

Збір даних

Як Sentry Analytics збирає та обробляє дані з багатьох джерел.

📊 Джерела даних

ДжерелоТип данихМетодЧастота оновлення
KununuВідгуки співробітниківWeb scrapingЗа запитом
GoogleВідгуки про компаніїPlaces APIЗа запитом
RedditОбговорення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 вакансій/хвилину

Аналіз в один клік створює 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'у:

  1. Дедуплікація - Видалення дублікатів
  2. Sentiment Analysis - AI categorization (Gemini 2.5)
  3. Topic Extraction - ABSA for aspects
  4. Trust Score - Перерахунок
  5. Оновлення View'ів - Оновлення матеріалізованих view'ів

🤖 Етичний Scraping

Ми впроваджуємо відповідальний збір даних:

  • ✅ Шанобливі затримки (1-5 секунд)
  • ✅ Ротація user-agent'ів
  • ✅ Відповідність обмеженням швидкості запитів
  • ✅ Експоненційна витримка при помилках
  • ✅ Дотримання Robots.txt

Збір даних запускається за запитом через Smart Search або API.