Техническое задание: Парсер товаров с авторизацией
Цель проекта
Создать полностью автоматизированное решение для сбора данных о товарах (включая категории, артикулы, размеры, цены, остатки и изображения) с защищенного авторизацией раздела сайта поставщика. Результат должен быть представлен в виде структурированного Excel-файла и организованной папки с изображениями.
Основные требования к системе
- Целевая ОС: macOS Sonoma (архитектура Apple M1).
- Автономность: Скрипт при первом запуске должен автоматически создать виртуальное окружение (venv) и установить все необходимые зависимости из файла
requirements.txt.
- Авторизация: Реализовать механизм входа на сайт поставщика с поддержкой активной сессии на протяжении всей работы парсера.
Функциональные требования
1. Сбор данных
- Обход всех категорий и подкатегорий товаров.
- Парсинг для каждого товара всех полей, включая:
- Артикул
- Все доступные размеры
- Цены (базовая, со скидкой)
- Остатки на складе
- Статус размера
- Основное и дополнительные изображения
- Соблюдение этичного парсинга: использование случайных задержек между запросами для снижения нагрузки на сервер.
2. Структура выходных данных
- Excel-файл: Полная перезапись файла
stocks.xlsx в листе stocks при каждом запуске.
- Формат строк: Одна строка = один размер товара. Данные должны быть сгруппированы по артикулу.
- Обязательные столбцы (первые 10):
- Артикул (article)
- Размер (size)
- Категория (category)
- Подкатегория (subcategory)
- Статус размера (size_status)
- Цена за штуку без скидки (price_per_unit)
- Цена без скидки (price_regular)
- Цена со скидкой (price_discounted)
- Остаток (stock)
- Дата и время парсинга (parsed_at)
- Последние столбцы таблицы должны содержать URL основного изображения и имя сохраненного локально файла.
- Все названия столбцов - на английском языке.
3. Работа с изображениями
- Создание иерархии папок:
Категория/Подкатегория/.
- Сохранение основного изображения в файл с именем
АРТИКУЛ.01.jpg.
- При наличии дополнительных изображений - сохранение их как
АРТИКУЛ.02.jpg, АРТИКУЛ.03.jpg и т.д.
- При каждом новом запуске папки с изображениями должны полностью очищаться и создаваться заново.
4. Логирование и обработка ошибок
- Подробный вывод лога в терминал о ходе выполнения (пройденные категории, количество обработанных товаров).
- В конце работы - сводная статистика по разделам (найдено моделей, создано строк, сохранено изображений).
- Ошибки данных (например, отсутствие поля): до 5 попыток повтора, затем пропуск проблемного элемента.
- Ошибки соединения с сайтом: Пропуск проблемной модели и повторная попытка ее обработки в конце цикла (до 5 попыток).
- Товары с нулевым остатком должны все равно попадать в итоговую таблицу.
5. Детали реализации
- Рабочая директория проекта жестко задана.
- Особое внимание к корректной обработке специальных символов (например,
/ в размерах) и символов национальных алфавитов в названиях папок.
- Скрипт должен запускаться одной командой (например,
python run.py).
- Учетные данные для авторизации (логин/пароль) и пути к файлам должны быть легко находимыми и изменяемыми в коде (например, в начале основного файла в виде констант).
Результат работы
После выполнения скрипта в указанной директории должен появиться актуальный Excel-файл с полными данными по товарам и структурированная папка с изображениями, готовые к дальнейшему использованию в учетных системах или для анализа.