Примечание: Этот проект требует постоянного обновления кода из-за изменения названий селекторов на сайтах интернет-магазинов. Если код не обновлять, то сервис перестанет собирать данные с сайтов!
Интернет-магазины, с которых данные собираются:
Статус сервиса:
🟥Не обновлён.
Сбор информации в интернете — трудоёмкая, отнимающая много времени работа. Для решения подобной задачи можно использовать парсеры, которые способны в течение суток перебрать большую часть веб-ресурсов в поисках нужной информации и автоматизировать эту информацию.
Сервисы, предоставляющие услуги мониторинга цен и «парсинга» данных, в основном представляют собой веб-сайт, где есть возможность делать запросы на получение данных о товарах и экспортировать их в форматах CSV, PDF, XML.
Целью данной работы является разработка сервиса для сбора данных товаров с интернет-магазинов.
Сервис должен решать следующие задачи:
- Сбор данных с сайтов интернет-магазинов.
- Сбор данных о ценах товаров, которые уже хранятся в базе данных для того, чтобы показать, как цена данных товаров меняется каждый день.
- Хранение данных о пользователях и товарах в базе данных.
- Проверка собранных данных на актуальность (например, если URL товара недействительна, то все записи об этом товаре будут удалены).
- Отображение собранных данных товаров в виде графиков для мониторинга динамики изменения цен у категорий.
- Возможность пользователя выбирать конкретную категорию товаров, данные о товарах которой он желает получить. Пользователь также может выбрать все категории товаров, а не одну конкретную категорию.
- Возможность экспорта собранных данных в виде файла в форматах CSV, XML и PDF.
В этом разделе представлены скриншоты страниц данного сервиса и содержание экспортируемых файлов (pdf, xml и csv). Также представлено краткое описание предназначения страниц и что в них содержится.
Окно авторизации:
Окно регистрации:
Это страница, на которой оказывается пользователь после успешной авторизации.
Здесь пользователь выбирает сайт интернет-магазина, с которого он желает получить данные о товарах. Затем он выбирает одну из категорий товаров (или он может выбрать все категории отваров) и нажимает на кнопку «Выбрать». После этого пользователь окажется на другой странице — «Parse», где пользователь может увидеть краткую статистику по каждой из категорий товаров на выбранном им сайте интернет-магазина (например, цены у самого дорогого и самого дешёвого товаров у категории) и графики, показывающие изменение средней цены у категории товаров с течением времени.
Для пользователя сервиса предусмотрена возможность выбирать конкретную категорию товаров у интернет-магазина, чтобы получить только те данные, которые его интересуют. Пользователь может выбрать все категории, чтобы получить абсолютно все данные о товарах для данного интернет-магазина.
Здесь содержится информация о том, что из себя представляет данный сервис, каков его функционал и с каких интернет-магазинов он собирает данные.
Страница, на которой оказывается пользователь после выбора интернет-магазина и категории товаров на главной странице «Home».
Здесь пользователь может увидеть краткую статистику по каждой из категорий товаров на выбранном им сайте интернет-магазина (например, цены у самого дорогого и самого дешёвого товаров у категории) и графики, показывающие изменение средней цены у категории товаров с течением времени.
Также пользователь может скачать собранные данные в виде файла определённого формата (pdf, csv и xml).
На странице «Parse» пользователь выбирает формат «PDF» и нажимает на кнопку «Выбрать». Откроется окно для выбора места загрузки файла. После выбора начнётся скачивание файла. Содержимое этого файла:
На странице «Parse» пользователь выбирает формат «CSV» и нажимает на кнопку «Выбрать». Откроется окно для выбора места загрузки файла. После выбора начнётся скачивание файла.
После того, как файл будет скачан, необходимо открыть Microsoft Excel и создать новый файл. Далее нужно выбрать «Из текстового/CSV-файла» на вкладке «Данные». Откроется окно, где нужно выбрать кодировку «UTF-8» и символ табуляции в качестве разделителя. После того, как данные будут загружены, Excel-таблица будет заполнена данными из CSV-файла:
На странице «Parse» пользователь выбирает формат «XML» и нажимает на кнопку «Выбрать». Откроется окно для выбора места загрузки файла. После выбора начнётся скачивание файла.
После того, как файл будет скачан, его содержимое можно увидеть, используя онлайн-сервисы:
Структура веб-сервиса:
Серверная часть:
База данных и всё, что с ней используется:
Авторизация и регистрация:
Модуль сбора данных:
- Puppeteer.js
- user-agents
- puppeteer-extra и puppeteer-extra-plugin-stealth (доп. библиотеки для обхода блокировок)
Построение графиков:
Экспорт в файл:
Клонируем удалённый репозиторий на локальную машину:
git clone https://github.com/Nico-kun123/EShop-Parser
Устанавливаем все необходимые компоненты:
npm install
Содержание файла "docker-compose.yml":
Для запуска базы данных нужно ввести в терминале следующее:
Примечание: Предусмотрено, что на вашем устройстве установлен Docker.
docker-compose up -d
...а для выключения:
docker-compose down
Содержание "package.json":
В проекте есть следующие скрипты:
- "build". Запускает транскомпилятор "Babel" для сервера;
- "start". Запускает скрипт "build", затем — сам сервер;
- "parser". Запускает модуль-сборщик данных.
Кудрявцев Николай (Электронная почта: nicolay.kudryavtsev@gmail.com)