Техническое задание: Парсер товаров с авторизацией

Цель проекта

Создать полностью автоматизированное решение для сбора данных о товарах (включая категории, артикулы, размеры, цены, остатки и изображения) с защищенного авторизацией раздела сайта поставщика. Результат должен быть представлен в виде структурированного Excel-файла и организованной папки с изображениями.

Основные требования к системе

  • Целевая ОС: macOS Sonoma (архитектура Apple M1).
  • Автономность: Скрипт при первом запуске должен автоматически создать виртуальное окружение (venv) и установить все необходимые зависимости из файла requirements.txt.
  • Авторизация: Реализовать механизм входа на сайт поставщика с поддержкой активной сессии на протяжении всей работы парсера.

Функциональные требования

1. Сбор данных

  • Обход всех категорий и подкатегорий товаров.
  • Парсинг для каждого товара всех полей, включая:
    • Артикул
    • Все доступные размеры
    • Цены (базовая, со скидкой)
    • Остатки на складе
    • Статус размера
    • Основное и дополнительные изображения
  • Соблюдение этичного парсинга: использование случайных задержек между запросами для снижения нагрузки на сервер.

2. Структура выходных данных

  • Excel-файл: Полная перезапись файла stocks.xlsx в листе stocks при каждом запуске.
  • Формат строк: Одна строка = один размер товара. Данные должны быть сгруппированы по артикулу.
  • Обязательные столбцы (первые 10):
    1. Артикул (article)
    2. Размер (size)
    3. Категория (category)
    4. Подкатегория (subcategory)
    5. Статус размера (size_status)
    6. Цена за штуку без скидки (price_per_unit)
    7. Цена без скидки (price_regular)
    8. Цена со скидкой (price_discounted)
    9. Остаток (stock)
    10. Дата и время парсинга (parsed_at)
  • Последние столбцы таблицы должны содержать URL основного изображения и имя сохраненного локально файла.
  • Все названия столбцов - на английском языке.

3. Работа с изображениями

  • Создание иерархии папок: Категория/Подкатегория/.
  • Сохранение основного изображения в файл с именем АРТИКУЛ.01.jpg.
  • При наличии дополнительных изображений - сохранение их как АРТИКУЛ.02.jpg, АРТИКУЛ.03.jpg и т.д.
  • При каждом новом запуске папки с изображениями должны полностью очищаться и создаваться заново.

4. Логирование и обработка ошибок

  • Подробный вывод лога в терминал о ходе выполнения (пройденные категории, количество обработанных товаров).
  • В конце работы - сводная статистика по разделам (найдено моделей, создано строк, сохранено изображений).
  • Ошибки данных (например, отсутствие поля): до 5 попыток повтора, затем пропуск проблемного элемента.
  • Ошибки соединения с сайтом: Пропуск проблемной модели и повторная попытка ее обработки в конце цикла (до 5 попыток).
  • Товары с нулевым остатком должны все равно попадать в итоговую таблицу.

5. Детали реализации

  • Рабочая директория проекта жестко задана.
  • Особое внимание к корректной обработке специальных символов (например, / в размерах) и символов национальных алфавитов в названиях папок.
  • Скрипт должен запускаться одной командой (например, python run.py).
  • Учетные данные для авторизации (логин/пароль) и пути к файлам должны быть легко находимыми и изменяемыми в коде (например, в начале основного файла в виде констант).

Результат работы

После выполнения скрипта в указанной директории должен появиться актуальный Excel-файл с полными данными по товарам и структурированная папка с изображениями, готовые к дальнейшему использованию в учетных системах или для анализа.

Доработка интернет-магазина на Битрикс

Требуется внести ряд улучшений в существующий интернет-магазин на платформе Битрикс. Проект предполагает долгосрочное сотрудничество с возможностью последующих доработок.