Русский  English  Все проекты

Парсер каталога категорий и товаров leroymerlin.ru в формате YML



Парсер товаров и каталогов сайта https://leroymerlin.ru/ в файл формата yml за максимально короткий срок (не забываем про обход блокировок и т.п. - предположение об использовании на ресурсе js-формирования cookie, защиты qrator).

Язык: PHP
Правила кода:
открытый код с комментариями функций и основных циклов/условий/переменных/констант
Имя исполняемого файла: pars_lm.php
Параметры:
без параметра
Создание файла yml со всеми каталогами, товарами и картинками,
имя файла: pars_lm.yml
Расположение файла pars_lm.yml - указывается как константа в исполняемом файле, например,
$yml_all = __DIR__ . ‘/catalog/pars_lm-all.yml’
Расположение каталога с картинками - указывается как константа в исполняемом файле, например,
$imgcat = __DIR__ ‘/catalog/img’
имя файла картинки соответствует артикулу товара с добавлением индекса(_xx), например:
артикул товара: 83800179, тогда
имена файлов картинок:
83800179_01.jpg
83800179_02.jpg
83800179_03.jpg
и т.д.
Примечание для изображений:
Не забывать определять расширение исходного файла с картинкой.
При наличии разных размеров картинок - определять и загружать наибольшего разрешения, например, у товара с артикулом 83800179, как впрочем и у других товаров, на текущий момент это картинки с разрешением: 1200x1200:
https://res.cloudinary.com/lmru/image/upload/f_auto,q_auto,w_1200,h_1200,c_pad,b_white,d_photoiscoming.png/LMCode/18415706.jpg
upd-cat
Обновление файла yml с каталогами,
имя файла: pars_lm-cat.yml
Расположение файла pars_lm-cat.yml - указывается как константа в исполняемом файле, например,
$yml_cat = __DIR__ . ‘/catalog/pars_lm-cat.yml’
(учитывать закрывающие в случае докачки и пр.)
upd-offers
Создание/обновление файла yml с товарами (учитывать закрывающие в случае докачки и пр.)
upd-img
Обновление/скачивание изображений товаров
Расположение каталога с картинками - указывается как константа в исполняемом файле, например,
$imgcat = __DIR__ ‘/catalog/img’
Примечание:
обновляем файлы с картинками в случае изменения размера файла картинок или отсутствия
иной параметр
Уведомление о неверном заданном параметре


Входные данные: каталоги и товары с основными данными, описанием и с картинками товаров с сайта https://leroymerlin.ru/, id-города (задается как константа в коде)
Выходные данные:
1) файл в формате yml c категориями товаров со ссылками на родительские категории и c товарами (основные данные, параметры, описание, ссылка на картинку относительно пути: $imgcat = __DIR__ ‘/catalog/img’) ссылающимися на родительскую категорию
2) файл в формате yml c категориями товаров со ссылками на родительские категории
3) файл в формате yml c товарами (основные данные, параметры, описание, ссылка на картинку относительно пути: $imgcat = __DIR__ ‘/catalog/img’) ссылающимися на родительскую категорию
4) Скачивание картинок товаров относительно пути $imgcat = __DIR__ ‘/catalog/img’ и правила задания имен файлов картинок (нужно откуда-то брать список товаров (ссылки на товары) по которым качать картинки)
5) Ведение лог-файла
6) Ведение журнала работы парсера с целью определения точки останова работы - возобновления с последнего места в случае неполной отработки задания по параметру
Условия работы скрипта/парсера:
ведение лог-файла
возможность докачивания (товаров в yml / картинок в каталог) с места разрыва (может предварительное создание какого-то файла json со списком товаров для парсинга, типа: дата/время, товар, статус)
[
{
"date": "2022-05-11 14:30",
"category": "http://178.248.234.184/catalogue/nabory-sadovoy-mebeli",
"catid": 18,
"offerid": 18415706,
"offerhref":” http://178.248.234.184/product/nabor-sadovoy-mebeli-ottoman-uglovoy-polirotang-bezhevyy-s-chernym-stol-i-divan-82467040/”,
"status": "true", //true, false, error
},


Примерный формат лог-файла:
“dd-mm-yyyy/hh:mm дата/время начала/окончания выполнения парсера”
“Создание yml-файла с каталогами”
“Создание yml-файла с каталогами и товарами, скачивание картинок”
“Обновление / Скачивание картинок”
“dd-mm-yyyy/hh:mm - ошибка при скачивании картинки”
“dd-mm-yyyy/hh:mm - ошибка при обновлении каталогов”
“dd-mm-yyyy/hh:mm - ошибка при обновлении товаров”
и пр..

Нумерация ID-каталогов (см. примеры в приложении)
0 - корневая
Категории первого уровня: Далее с 1 по …
Категории начиная со второго уровня: “количество категорий первого уровня” * 2 1

Нумерация ID-товаров = артикул товара с сайта LM

Данные по товару
offer id
available
categoryId
name
price
description
picture(s)
param name

Приложение 1. Примерный формат yml-файла с категориями




Leroymerlin
ООО Леруа Мерлен Восток
https://leroymerlin.ru/




Сад
Садовая мебель
...
...
...
Освещение коммерческих помещений
Освещение в гараже




Приложение 2. Примерный формат yml-файла с категориями и товарами




Leroymerlin
ООО Леруа Мерлен Восток
https://leroyme
21.06.2022 16:21



 Ответы фрилансеров