Данный проект представляет собой веб-парсер для сайта Samokat, который собирает информацию о товарах, таких как названия, цены и описание. Парсер использует Selenium для автоматизации взаимодействия с веб-страницами, а полученные данные сохраняются в базе данных PostgreSQL. Проект работает в среде Docker для упрощения развертывания и обеспечения изоляции.
- Парсинг названий, цен с сайта Samokat.
- Использование браузера Chrome в headless-режиме для эффективного парсинга.
- Сохранение собранных данных в базе данных PostgreSQL.
- Возможность конфигурации и развертывания через Docker Compose.
- Selenium WebDriver запускается в Docker-контейнере и эмулирует работу браузера для получения HTML-кода страниц.
- Парсинг данных осуществляется с помощью Selenium: скрипт проходит по страницам товаров, собирает информацию о товарах и передает её в базу данных.
- PostgreSQL используется для хранения информации о товарах: каждая запись содержит название, цену и описание товара.
- Docker Compose используется для поднятия всех необходимых сервисов — базы данных PostgreSQL и Selenium Chrome WebDriver.
Для успешного запуска проекта вам потребуется:
- Docker.
- Подключение к интернету для получения данных с сайта.
-
Склонируйте репозиторий с проектом:
git clone https://github.com/cramatsu/samokat-parser.git
-
Перейдите в директорию проекта:
cd samokat-parser
-
Поднимите Docker контейнеры:
docker-compose up --build
-
Перейдите в консоль контейнера Django:
docker exec -it <CONTAINER_NAME> bash
Используйте команду
docker ps
, для того, чтобы узнать название контейнера -
Выполните команду активации виртуального окружения:
poetry shell
-
Создайте учетную запись администратора с помощью команды
superuser
и следуйте инструкциям:python manage.py createsuperuser
Теперь, когда проект настроен, мы можем приступить к парсингу данных, для этого, не выходя из django-контейнера, используются следующие команды:
Последовательность команд при первом запуске приложения: fetch_categories
-> parse_products
Описание:
Эта команда собирает все категории товаров с сайта Samokat. Используя Selenium, она парсит ссылки на категории с главной страницы и сохраняет их в базу данных.
Функциональность:
- Переход на главную страницу сайта Samokat.
- Извлечение списка категорий товаров (название и URL).
- Сохранение категорий в таблице
categories
базы данных.
Запуск: Запустите команду для обновления списка категорий в базе данных:
python manage.py fetch_categories
Описание:
Эта команда парсит категории с сайта Samokat, извлекая их название и URL. Она сохраняет данные о категориях в базу данных, чтобы впоследствии использовать их для парсинга товаров.
Аргументы
limit
- количество категорий, по которым будет проведен парсинг
Функциональность:
- Переход на главную страницу сайта Samokat.
- Извлечение списка категорий с их названиями и URL.
- Сохранение категорий в таблице
products
базы данных.
Запуск: Чтобы запустить команду и обновить категории в базе данных:
python manage.py parse_products
или
python manage.py parse_products --limit 10
Проект включает админ-панель Django, которая позволяет управлять собранными данными напрямую через браузер. Вы можете просматривать, редактировать или удалять данные, полученные в результате парсинга.
Чтобы получить доступ к админ-панели, перейдите по адресу http://localhost:8000/admin после запуска приложения Django. Для входа вам понадобятся учётные данные администратора, которые вы зададите при настройке.
by Andrew Sorokin, @cramatsu, 2024