Фрилансеры предложат решение вашей задачи уже через несколько минут!
Публикация заказа не займет много времени.
Виталий Беленький
37 лет, Россия
26 дней в сервисе
Был онлайн 25 дней назад

Нужно спарсить данные с сайта производителя оборудования используя инфраструктуру модуля на Yii2. Скелетон модуля с рабочим примером для AMD. 

https://www.amd.com/en/support/
Интересуют все производители присутствующие на рынке. Сейчас в топе на выбор
https://www.asrock.com/support/index.asp
https://www.dell.com/support/home/ru/ru/rubsdt1/Products?~ck=mn
https://support.hp.com/ru-ru/drivers
https://support.razer.com/

# Задача
Нужно обойти весь каталог и собрать всю структуру до страницы конечного продукта и файлов к нему. 
На выходе нужно иметь возможность ассоциации файлов по критериям:
- Тип оборудования
- Операционная система \ Разрядность ОС
- Серия
- Модель

Последовательность запросов на примере HP:
https://support.hp.com/ru-ru/products
https://support.hp.com/ru-ru/products/gaming
https://support.hp.com/ru-ru/products/gaming/omen-accessories
https://support.hp.com/ru-ru/product/omen-by-hp-mouse-with-steelseries/12733342
https://support.hp.com/ru-ru/drivers/selfservice/omen-by-hp-mouse-with-steelseries/12733342

# Описание
Модуль состоит из двух частей
1. Парсер и сохранение информации в БД
2. Админка ассоциации данных
Для упрощения развёртывания используется vagrant. Система контроля версий Git.

## Требования к парсеру
1. Консольные команды сущностей разделены, если это возможно. Категории, страницы продукта, список файлов - это три разные консольные команды
2. Повторный запуск команды не приводит к удалению информации, а лишь обновляет её. Особенно это важно по хранению сущностей основного проекта
3. Все данные получаемые от производителя кэшируется "как есть", это позволяет перенастраивать парсер без необходимости повторной закачки данных
4. Чтобы парсинг данных можно было легко перенастраивать для разбора используется DOM модель документа

```
./yii parser-amd/parse/tree
./yii parser-amd/parse/files
./yii parser-amd/parse/operation-system
```

## Требования к админке
1. Реализовать ассоциации сущностей: типы оборудования, операционные системы, типы файлов, серии продукта, продукты
2. Типы оборудования и серии на выводе сводить к дереву

## Зависимости и технический стек
* php >= 7.2
* mariadb >= 10.2
* Yii > 2.15.0

# Что уже решено в скелетоне
0. Тестовый рабочий код на примере парсера AMD
1. Организация и подключение модуля Yii2
2. Обертка для работы с DOM делающая работу с DOM удобнее. https://github.com/bezdelnique/parser-toolbox
3. Все взаимодействие с источником данных вынесено в отдельный класс: `helpers/Downloader.php`
4. Реализация массовых вставок в БД с сохранением данных при помощи класса `EntitiyBulk`
5. В админке реализован ассоциатор для дерева категорий и остальных сущностей

Если хотите ознакомиться со скелетоном пришлите ваш логин bitbucket.org
Подробное описание требований и описание как развернуть проект 
https://gist.github.com/bezdelnique/9371e0fe2f2dd954f5927dfe40dd0a17