Парсер leroymerlin.ru

30 000 руб. за проект
20 мая 2022, 20:24 • 8 откликов • 88 просмотров

Парсер товаров и каталогов сайта 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’;
(учитывать закрывающие </offers> </shop> </yml_catalog> в случае докачки и пр.)
upd-offers
Создание/обновление файла yml с товарами (учитывать закрывающие </offers> </shop> </yml_catalog> в случае докачки и пр.)
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-файла с категориями

<?xml version="1.0" encoding="UTF-8"?>
<yml_catalog date="2022-05-10 17:40">
<shop>
<name>Leroymerlin</name>
<company>ООО Леруа Мерлен Восток</company>
<url> https://leroymerlin.ru/</url>
<currencies>
<currency id="RUR" rate="1"/>
</currencies>
<categories>
<category id="1" parentId="0">Сад</category>
<category id="17" parentId="1">Садовая мебель</category>
...
...
...
<category id="1712" parentId="1707">Освещение коммерческих помещений</category>
<category id="1713" parentId="1707">Освещение в гараже</category>
</categories>
</shop>
</yml_catalog>

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

<?xml version="1.0" encoding="UTF-8"?>
<yml_catalog date="2022-05-10 17:40">
<shop>
<name>Leroymerlin</name>
<company>ООО Леруа Мерлен Восток</company>
<url> https://leroymerlin.ru/</url>
<currencies>
<currency id="RUR" rate="1"/>
</currencies>
<categories>
<category id="1" parentId="0">Сад</category>
<category id="17" parentId="1">Садовая мебель</category>
<category id="18" parentId="17">Наборы садовой мебели</category>
<category id="19" parentId="17">Столы для дачи</category>
<category id="20" parentId="17">Кресла для дачи</category>
<category id="21" parentId="17">Стулья для дачи</category>
<category id="22" parentId="17">Скамьи садовые</category>
<category id="23" parentId="17">Диваны для дачи</category>
<category id="24" parentId="17">Раскладушки и надувные кровати</category>
<category id="25" parentId="17">Садовые ящики</category>
</categories>
<offers>
<offer id="82467040" available="true">
<categoryId>18</categoryId>
<name>Набор садовой мебели Ottoman угловой полиротанг бежевый с черным: стол и диван</name>
<price>64526.00</price>
<description><![CDATA[СКАЧАТЬ ИНСТРУКЦИЮ

Набор садовой мебели Ottoman поможет организовать удобную обеденную зону на открытой площадке, в садовой беседке, на веранде или террасе. Состоит из углового дивана и прямоугольного стола со стеклянной столешницей. Продается в разобранном виде.
Особенности
Мебель изготовлена из искусственного ротанга бежевого цвета. Материал устойчив к атмосферным воздействиям, ажурное плетение придает мебели визуальную легкость. При этом предметы достаточно прочные за счет металлического каркаса.
Места на диване достаточно, чтобы разместиться вшестером. Для удобства отдыха предусмотрены подушки с упругим полиуретановым наполнителем и чехлом из полиэстера. Чехол съемный, цвет подушек — черный.
Страна производства набора — Вьетнам.
Внимание! Товар весом более 25 кг. необходимо перемещать минимум двумя людьми или с помощью механизированного оборудования.]]></description>
<picture> https://res.cloudinary.com/lmru/image/upload/f_auto,q_auto,w_2000,h_2000,c_pad,b_white,d_photoiscoming.png/LMCode/82467040.jpg</picture>
<param name="Вес, кг">57</param>
<param name="Страна производства">Вьетнам</param>
<param name="Цвет">Бежевый/ черный</param>
<param name="Гарантия (лет)">2</param>
<param name="Цветовая палитра">Бежевый, Черный</param>
<param name="Основной материал">Искусственный ротанг</param>
<param name="Количество персон">6</param>
<param name="Способ очистки">Машинная стирка</param>
<param name="Функция хранения">Утапливаемый</param>
<param name="Материал сидения">Полиэстер</param>
<param name="Наполнитель">Полиуретановая пена</param>
<param name="Тип упаковки">Коробка</param>
<param name="Тип продукта">Садовая мебель для обеда</param>
<param name="Глубина товара в индивидуальной упаковке (см)">70</param>
<param name="Высота товара в индивидуальной упаковке (см)">22</param>
<param name="Ширина товара в индивидуальной упаковке (см)">162</param>
<param name="Вес товара в индивидуальной упаковке (кг)">57</param>
<param name="Размер стола (ДхШхВ) (в см)">90х150</param>
<param name="Размеры дивана (ДхШхВ) (в см)">240х190</param>
</offer>
<offer id="82386100" available="true">
<categoryId>18</categoryId>
<name>Набор садовой мебели New San Diego угловой металл/эвкалипт: угловой диван и журнальный стол</name>
<price>104411.00</price>
<description><![CDATA[СКАЧАТЬ ИНСТРУКЦИЮ

Набор садовой мебели New San Diego поможет организовать удобную зону отдыха для 4-5 человек. Подходит для установки на открытой площадке, в садовой беседке, на веранде или террасе частного дома. Продается в разобранном виде
Особенности
В набор входят два дивана, угловой элемент и небольшой квадратный столик. Каркас мебели сделан из алюминия, окрашенного в черный цвет, столешница стола и боковые полки диванов — из древесины.
Преимущества:

стильный лаконичный дизайн;
комфортные мягкие сиденья, объемные подушки под спину;
полки по краям диванов: можно положить гаджеты, поставить посуду.

Страна производства набора — Китай.
Внимание! Товар весом более 25 кг. необходимо перемещать минимум двумя людьми или с помощью механизированного оборудования.]]></description>
<picture> https://res.cloudinary.com/lmru/image/upload/f_auto,q_auto,w_2000,h_2000,c_pad,b_white,d_photoiscoming.png/LMCode/82386100.jpg</picture>
<picture> https://res.cloudinary.com/lmru/image/upload/f_auto,q_auto,w_2000,h_2000,c_pad,b_white,d_photoiscoming.png/LMCode/82386100_01.jpg</picture>
<picture> https://res.cloudinary.com/lmru/image/upload/f_auto,q_auto,w_2000,h_2000,c_pad,b_white,d_photoiscoming.png/LMCode/82386100_02.jpg</picture>
<picture> https://res.cloudinary.com/lmru/image/upload/f_auto,q_auto,w_2000,h_2000,c_pad,b_white,d_photoiscoming.png/LMCode/82386100_03.jpg</picture>
<picture> https://res.cloudinary.com/lmru/image/upload/f_auto,q_auto,w_2000,h_2000,c_pad,b_white,d_photoiscoming.png/LMCode/82386100_04.jpg</picture>
<param name="Вес, кг">68</param>
<param name="Страна производства">Китай</param>
<param name="Цвет">Черный/ серый/ коричневый</param>
<param name="Гарантия (лет)">2</param>
<param name="Цветовая палитра">Серый / Серебристый</param>
<param name="Основной материал">Алюминий</param>
<param name="Количество персон">5</param>
<param name="Функция хранения">Утапливаемый</param>
<param name="Материал сидения">Алюминий</param>
<param name="Материал поверхности">Дерево</param>
<param name="Тип упаковки">Коробка</param>
<param name="Тип продукта">Садовая мебель для отдыха</param>
<param name="Глубина товара в индивидуальной упаковке (см)">168</param>
<param name="Высота товара в индивидуальной упаковке (см)">89</param>
<param name="Ширина товара в индивидуальной упаковке (см)">92</param>
<param name="Вес товара в индивидуальной упаковке (кг)">68</param>
<param name="Размеры кресла (ДхШхВ) (в см)">83x83x63</param>
<param name="Размеры стула (ДхШхВ) (в см)">0</param>
<param name="Размеры дивана (ДхШхВ) (в см)">166x83x63 cm</param>
<param name="Размер стола (ДхШхВ) (в см)">80x80x34</param>
</offer>
</offers>
</shop>
</yml_catalog>



https://docs.google.com/document/d/1uiCH1ZVFCRvbDQcBw5q8deQo1gkwUOAGBFXzuQo1xDM/edit?usp=sharing