Техническое задание: Разработка парсера отзывов
Цель проекта
Создание высокопроизводительного и устойчивого к блокировкам парсера для извлечения структурированных данных отзывов об отелях с крупного туристического агрегатора.
Ключевая проблема
Целевой сайт использует современную систему защиты от ботов (DataDome), которая активно блокирует:
- Прямые HTTP-запросы, возвращая ошибку 429.
- Работу через стандартные прокси-серверы.
- Автоматизацию на базе обычных инструментов вроде Playwright, подставляя CAPTCHA.
Требования к решению
Функциональные
- Извлечение данных через GraphQL: Парсер должен перехватывать и выполнять GraphQL-запрос (
PWAReviewsSortingAndFiltersQuery) для получения отзывов непосредственно из бэкенда. - Полная пагинация: Возможность получения всех отзывов по объекту, а не только первой страницы.
- Извлекаемые данные:
- Основной текст отзыва, рейтинг (шкала 1-10), дата публикации.
- Имя автора отзыва.
- Детализированные оценки по категориям (чистота, сервис, локация и т.д.).
- Общая сводка: средний рейтинг и общее количество отзывов.
Технические и нефункциональные
- Язык программирования: Python.
- Производительность и устойчивость:
- Внедрение многоуровневой retry-логики для повторения попыток при обнаружении блокировки (например, по наличию определенного текста в заголовке страницы).
- Реализация многопоточности для параллельного сбора данных и увеличения скорости работы.
- Качество решения: Ожидается решение, превосходящее по скорости и надежности существующий прототип, который использует специализированный браузер для скрапинга и демонстрирует время отклика 15-45 секунд и успешность ~70% после нескольких повторов.
Ожидаемый результат
Готовый, отлаженный скрипт, способный стабильно и быстро собирать полные данные об отзывах, эффективно обходя защиту целевого ресурса.
Сроки
Ориентировочный срок выполнения: 3 дня. Детали могут быть обсуждены с исполнителем.