Найдите исполнителя для вашего проекта прямо сейчас!
Разместите заказ на фриланс-бирже и предложения поступят уже через несколько минут.

Парсер

Основа - проект на 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

Работа с очередями:

Например, когда нам нужно спарсить товары, мы итерируем по каждой из категорий, и для каждой категории создаем таск в очереди, который будет итерировать по пагинации этой категории и парсить товары/цены

Подробности в личке

2 года назад
PartMars
42 годаПольша
15 лет в сервисе
Был
8 месяцев назад