Веб-приложение для анализа и визуализации данных о товарах с Wildberries с современным интерфейсом и расширенной функциональностью.
- Парсинг товаров с Wildberries с использованием Selenium
- REST API для работы с данными
- Фильтрация и поиск товаров
- Статистика и аналитика
- Пагинация и сортировка
- Таблица товаров с колонками: название, цена, цена со скидкой, рейтинг, отзывы, категория
- Фильтры: диапазон цен, минимальный рейтинг, минимальное количество отзывов, категория
- Сортировка по всем колонкам (возрастание/убывание)
- Диаграммы: гистограмма распределения цен, график скидка vs рейтинг
- Динамическое обновление при изменении фильтров
- Современный адаптивный интерфейс с градиентами
- Backend: Django 5.2, Django REST Framework
- Frontend: HTML5, CSS3, JavaScript, Bootstrap 5.3, Chart.js
- База данных: SQLite
- Парсинг: Selenium WebDriver
- Фильтрация: django-filter
- Стилизация: CSS Grid, Flexbox, градиенты
- Клонируйте репозиторий:
git clone <repository-url>
cd test_wb_project- Создайте виртуальное окружение:
python -m venv venv
source venv/bin/activate # Linux/Mac
# или
venv\Scripts\activate # Windows- Установите зависимости:
pip install -r requirements.txt- Настройте переменные окружения:
# Скопируйте пример файла
cp env.example .env
# Отредактируйте .env файл, изменив SECRET_KEY
# SECRET_KEY=your-super-secret-key-here-change-this-in-productionВажно: Обязательно измените SECRET_KEY в файле .env на уникальное значение!
- Примените миграции:
python manage.py migrate- Создайте суперпользователя (опционально):
python manage.py createsuperuser- Запустите сервер разработки:
python manage.py runserver- Откройте браузер и перейдите по адресу: http://127.0.0.1:8000
Создайте файл .env в корне проекта со следующими переменными:
# Django Settings
SECRET_KEY=your-super-secret-key-here-change-this-in-production
DEBUG=True
ALLOWED_HOSTS=127.0.0.1,localhost
# Database Settings
DB_ENGINE=django.db.backends.sqlite3
DB_NAME=db.sqlite3
DB_USER=
DB_PASSWORD=
DB_HOST=
DB_PORT=
# Localization
LANGUAGE_CODE=ru-ru
TIME_ZONE=Europe/Moscow
# REST Framework
PAGE_SIZE=20
# Logging
LOG_LEVEL=INFOДля продакшена измените следующие переменные:
DEBUG=False
SECRET_KEY=your-very-long-and-random-secret-key
ALLOWED_HOSTS=yourdomain.com,www.yourdomain.comДля парсинга товаров с Wildberries используйте команду:
python manage.py parse_wildberries --query "телефон" --category "Электроника" --pages 3Параметры:
--query: Поисковый запрос (по умолчанию: "телефон")--category: Категория товаров (опционально)--pages: Количество страниц для парсинга (по умолчанию: 3)--use-api: Использовать API вместо Selenium (опционально)
Для добавления тестовых данных используйте команду:
python manage.py add_test_data --count 50GET /api/products/- Список товаров с пагинациейGET /api/products/stats/- Статистика товаровGET /api/products/price_distribution/- Распределение ценGET /api/products/discount_vs_rating/- Корреляция скидки и рейтинга
API поддерживает фильтрацию по следующим параметрам:
category- Категория товараmin_price/max_price- Диапазон ценmin_rating/max_rating- Диапазон рейтинговmin_reviews- Минимальное количество отзывовsearch- Поиск по названиюordering- Сортировка (price, rating, reviews_count, name, created_at)
Пример: /api/products/?category=Электроника&min_price=1000&max_price=50000&min_rating=4.0&ordering=-rating
- Колонки: Название товара, цена, цена со скидкой, рейтинг, количество отзывов, категория
- Сортировка: Клик по заголовку колонки для сортировки (возрастание/убывание)
- Визуальные индикаторы: Иконки сортировки, звездочки для рейтинга, бейджи скидок
- Пагинация: Навигация по страницам
- Диапазон цен: Слайдер с полями "От" и "До"
- Минимальный рейтинг: Поле для ввода рейтинга (0-5)
- Минимальное количество отзывов: Поле для ввода числа отзывов
- Категория: Выпадающий список всех доступных категорий
- Кнопки: "Применить фильтры" и "Сбросить"
- Гистограмма цен: Распределение товаров по ценовым диапазонам
- График скидка vs рейтинг: Точечная диаграмма корреляции
- Обновление: Диаграммы обновляются при изменении фильтров
- Карточки: Общее количество товаров, средняя цена, средний рейтинг, товары со скидкой
- Обновление: Статистика обновляется в реальном времени
test_wb_project/
├── products/ # Основное приложение
│ ├── management/ # Django команды
│ │ └── commands/
│ │ ├── parse_wildberries.py # Парсер Wildberries
│ │ └── add_test_data.py # Добавление тестовых данных
│ ├── migrations/ # Миграции базы данных
│ ├── models.py # Модели данных
│ ├── views.py # API представления
│ ├── serializers.py # Сериализаторы
│ ├── filters.py # Фильтры
│ ├── admin.py # Админка
│ └── wildberries_parser.py # Парсер Wildberries
├── templates/ # HTML шаблоны
│ └── index.html # Главная страница с интерфейсом
├── wb_analytics/ # Настройки проекта
│ ├── settings.py # Настройки Django
│ ├── urls.py # URL конфигурация
│ └── wsgi.py # WSGI конфигурация
├── requirements.txt # Зависимости
├── env.example # Пример переменных окружения
├── .env # Переменные окружения (создать)
├── .gitignore # Исключения Git
└── README.md # Документация
- Настроены базовые настройки безопасности Django
- Логирование для отслеживания активности
- Валидация входных данных на фронтенде и бэкенде
- REST API: Полнофункциональное API с фильтрацией и пагинацией
- Парсинг: Надежный парсер с обработкой ошибок
- Модели: Оптимизированные модели с вычисляемыми полями
- Фильтрация: Гибкая система фильтров с поддержкой диапазонов
- Современный дизайн: Градиенты, тени, анимации
- Адаптивность: Работает на всех устройствах
- Интерактивность: Динамическое обновление без перезагрузки
- UX/UI: Интуитивный интерфейс с визуальными подсказками
- Производительность: Оптимизированная загрузка данных
- Статистика: Детальная аналитика по товарам
- Визуализация: Интерактивные диаграммы Chart.js
- Фильтрация: Мощные инструменты для анализа данных
- Экспорт: Возможность экспорта данных через API
- Обновите
ProductFilterвproducts/filters.py - Добавьте соответствующие поля в HTML форму
- Обновите JavaScript для обработки новых фильтров
- Создайте новый API endpoint в
products/views.py - Добавьте сериализатор в
products/serializers.py - Создайте функцию обновления диаграммы в JavaScript
- Основные стили находятся в
<style>блокеtemplates/index.html - Цветовая схема: градиенты от
#667eeaдо#764ba2 - Анимации: hover эффекты и transitions