
Парсер Oзон
Парсер
Основа - проект на laravel (не ниже 8 версии)
ORM - Doctrine
Используем очереди (laravel-horizon)
Функциональность: Получаем необходимые данные о категориях, товарах и ценах товаров, сохраняем их в бд.
Что делает 1 подход
1.Парсим структуру категорий
2.Проходим по пагинации списка товаров каждой конечной категории (конечная категория - категория не имеющая дочерних категорий)
3.Для каждого из товаров получаем информацию о его названии и цене
Общие положения: В данный момент в качестве ORM используется RedBean (https://redbeanphp.com/index.php), на этапе прототипирования ее можно оставить, но в финале нужно переехать на доктрину, тоесть создать для каждой сущности маппинг и тд.
Диаграмму сущностей дадим.
Файл прокси располагается в /storage/proxy.txt и содержит строки с проксями, каждый прокси имеет форму: 91.11.11.11:56392:hErJUXr5:mNZr4zуу (ip:port:login:pass)
Необходимо создать несколько query-классов, которые будут обеспечивать функционал запросов сущностей.
Используем CQS (желательно): создаем в папке Main папки Command и Query, в первую очередь необходимы классы, которые обеспечат функционал запросов (классы-репозитории) для каждой из сущностей.
Основное хранилище - Postgresql, но можно и MySQL. Oчереди - horizon (redis) Для контейнеров используем laradock, папку с ларадоком кладем не во внутрь проекта, а рядом с ним.
Структура папок:
\App\Application Domain
Services
Command
ItemService.php
Query
ItemRepository.php
Entities
Item.php
\App\Infrastructure
Seeders
Config
Работа с очередями:
Например, когда нам нужно спарсить товары, мы итерируем по каждой из категорий, и для каждой категории создаем таск в очереди, который будет итерировать по пагинации этой категории и парсить товары/цены
Подробности в личке
Заявки фрилансеров
