Вступление. Сегодня рассмотрим пример создания пресета, который продемонстрирует возможность выгрузки товаров интернет-магазина в формат yml.
- Минимальная версия A-Parser:
- 1.2.187
YML (Yandex Market Language) — особый стандарт, разработанный Яндексом для принятия и размещения информации в базе данных Яндекс.Маркет. При размещении файла на сайте, регулярное обновление каталога на Яндекс.Маркет будет происходить автоматически и отражать все актуальные изменения (наличие, цена, появление новых товаров).
Единый формат позволяет быстро и эффективно обрабатывать предоставляемую магазинами информацию о товарах и услугах и размещать ее в каталоге Яндекс.Маркет. Таким образом, без размещения этого файла невозможно рекламироваться через Маркет.
Создание парсера. В качестве примера создадим парсер, который будет парсить одну с категорий на сайте «http://www.dochkisinochki.ru» и выгружать товары с одной из категорий в формат yml. В качестве примера выгрузим товары, которые находятся в категории «Игрушки для новорожденных».
Пресет будет выглядить следующим образом:
Используя регулярные выражения, будем собирать данные по страницам сайта, которые мы планируем выгружать в файл. К примеру возьмем такие значения:
Для прохода по всем ссылкам с товарами, которые есть на странице, воспользуемся инструментом «tools.query.add». На первом уровне, собираем все ссылки на товары и добавляем к ним адрес домена, так как в исходном коде ссылки размещаются без него:
- название товара (name);
- цену товара (price);
- «старую» цену на товар (oldprice);
- название бренда (brand);
- код товара (kod);
- ссылку на товар (query);
На втором уровне, переходим на каждый товар. Через регулярные выражения, которые указанны в интерфейсе, собираем нужные нам значения и помещаем их в теги, в соответствии со стандартом ymlКод:IF query.lvl == 0; FOREACH p1.chap; tools.query.add('http://dochkisinochki.ru' _ link); END;
Таким образом, получаем нужные нам значения в нужном виде.Код:'<offer>' _ "\n"; '<url>'_ query _'</url>' _ "\n"; '<price>' _ p1.price.replace('"', "''").replace('^none$', '').replace('\s+', '') _ '</price>' _ "\n"; '<oldprice>' _ p1.oldprice.replace('"', "''").replace('^none$', '').replace('\s+', '') _'</oldprice>' _ "\n"; '<brand>' _ p1.brand.replace('"', "''").replace('^none$', '') _'</brand>' _ "\n"; '<name>' _ p1.name.replace('"', "''").replace('^none$', '') _'</name>' _ "\n"; '<kod>' _ p1.kod.replace('"', "''").replace('^none$', '') _'</kod>' _ "\n"; '</offer>' _ "\n";
После этого, согласно стандарту, нам нужно заполнить «шапку». Делать это будем, через указание значений в полях «Начального» и «Конечного» текста».
Начальный текст:
Конечный текст:Код:<?xml version="1.0" encoding="UTF-8"?> <yml_catalog date="[% USE mydate = date(format = '%Y-%b-%d %H:%M', locale = 'C'); mydate.format(); %]"> <shop> <name>Дочки синочки</name> <company>Tne Best inc.</company> <url>https://www.dochkisinochki.ru</url> <currencies> <currency id="RUR" rate="1"/> </currencies> <categories> <category id="1">Игрушки для новорожденных</category> </categories> <offers>
В эти поля, помещаются «статичные» значение, которые не изменяется. Заполняем их вручную, согласно стандарту.Код:</offers> </shop> </yml_catalog>
В интерфейсе, предусмотрим также проход по страницам пагинации, используя свойства «Next page RegEx» и «Page as query» - которые будут выбирать ссылку на следующую страницу и делать запрос соответственно.
На этом процесс создания парсера завершен, результат сохраняет значение в файл с расширением yml с нужной нам структурой:
<?xml version="1.0" encoding="UTF-8"?>
<yml_catalog date="2018-May-11 14:25">
<shop>
<name>Дочки синочки</name>
<company>Tne Best inc.</company>
<url>https://www.dochkisinochki.ru</url>
<currencies>
<currency id="RUR" rate="1"/>
</currencies>
<categories>
<category id="1">Игрушки для новорожденных</category>
</categories>
<offers>
<offer>
<url>http://dochkisinochki.ru/icatalog/products/690017/</url>
<price>3349</price>
<oldprice>3684</oldprice>
<brand>Fisher-Price</brand>
<name>Развивающая игрушка Fisher-Price Ученый щенок с технологией Smart stages 27 см</name>
<kod>GL000154413</kod>
</offer>
<offer>
<url>http://dochkisinochki.ru/icatalog/products/3828553/</url>
<price>2502</price>
<oldprice></oldprice>
<brand>Жирафики</brand>
<name>Развивающий коврик Жирафики Веселое сафари 84 см</name>
<kod>GL000400757</kod>
</offer>
<offer>
<url>http://dochkisinochki.ru/icatalog/products/751178/</url>
<price>379</price>
<oldprice></oldprice>
<brand>Happy Baby</brand>
<name>Игрушка на палец Happy Baby Джунгли/сафари, 5 см</name>
<kod>GL000191121</kod>
</offer>
.......
</offers>
</shop>
</yml_catalog>Пресет в каталоге можно найти здесьeJytV21P4zgQ/iuRtVVAQF8WuEMlFLEcFXuC0oXyYUW4yiRum6tjZ+2kpVfx329s
x0lauh946YfUM555ZjyeGdtLlGI5lX1BJEklaj8sUaLHqI1+Xl8NyTOOE7SLEiwk
EUrgAfVI2m5fDgZ94IdkhDOaot0lShcJAS0+I0JEIYHJKAR6zHl4zjU9wzQDkYev
zebjS6kRZDLl8S2RGggJM2ijEKdY02PyDKQnE8ycgGIpT3w0ORgqepjQSKY+6vi+
3PGw+k4EGYHAVn3ndBsmLMLAGBsXFnIGFgIvgKn/ezjWHk1wUsipRSMasSl6h9NR
SuJE8AQcehKYheCQdszz/QY2TsNIrWTd0XU/RxSna26uuqjxV3zkSRpxJu1OBBMS
THvkOe3jcWU70GrAwCcbYwayQ0bmvrKEwzBScJii9nIV6yqKI7X2Jnr5vfUEBM9k
j8x/ZEQsSvOpyMg6+pSQRItdkRkBTvPlHekyaTlRqFYBweoLHmYB5El9xy6uuhOT
1oejr6y8K0GUi7l71zhifREFJM/nwr9PyY9EIX/UReve57rGafhu70xbqNSZnGbV
+H1qjU15+C4f0yilpAyaIT/qTMBjWNMCHHp8LCa6XMRYufBQc753nV+qiup0Rp2T
E6d57DM/7d7cXpydXzpJq676nOb5aco5lXUjDsW45U7SNGk3GiEPJtNIRkz/10Xm
OkNHdcNtrXjR+wv+L67uLuDP9fhoRERHiahGwnwEXMf8XC8TtOMOjUvO0PUamrFZ
VqeDngQ3NVEXJKE4IFuuj9xd0HFhsF1y/2GckS8w47oVrtp9wwMoMFnibjBq09Da
tfTHTYPlFfANxnX7tpY18Raz2kQJsQFfNSgLr8ZvRi8AVsH91PWgLCw0DN+MbNVL
YBWvDakE2ebUHssquMMzMuCqViJKSnYXqLxivkAlEjVbH+nC2NquL2K6cpyZilEV
VVbRPYt+6bORcZBVGRsR2RU8BlYKp17OXNhqe0BfNI0AItO6P4yOPd8keNrF4EdY
TIwwlTADnUvglIub/LiE44+zM0r10VeKafhvWURDuIadjUDpe664WeTmFcZLsbqq
KbitzQX4UAqF/IqP7dLVSVwEo6c4MRekADCLy2HhEpkQps56n3mnzzF1AFyCIDTl
Vr3pI4ewgIcRGwPjftDdO/LRaQdkYUeGAXRMyseO2i+Yhu51f3fhxAtFOyeavWW2
ECi39nOv9rRXC53aZbt2DalEeYCpEnTP3e3jXK/Y82PIGnUm6IT15IQndqyT2s+a
B60D9d0n6nvwpx5j/T1yNKtlCP0NfyeaF0mOnffnzoAR5xuRqROxoO41LDuXUk1Q
9VoJzXY+n9dfNVzTJy1mJgREERKoY2vb8hbmunN7fwuRFiaMLR81rGrjla4HQSdj
LlbRDC9Ha6mwqfCYle/rNTf114yPXoVq30TySU+PnPWI7X+tRK9Z4f9RUT6saOnv
gYE7hFXk/pXLWl+EOYUsVbaFsyRPz7y5KAmvkWeD16hkYQetVdNKc1hlBpyNovFN
/uqxkhkbwLvqhp3DZlOiyotllEJzkOS2bFJnMu8Giijq+JXyuTahrhX2tYX0cf33
nbkTwLkCTfBQORhDQVetVlqDbjooP9Y3ZlojytdfiWkjGotMwvxeSBd4j/EZF/y/
SUgYW0wnDbBuN0Q/HnVzhLu/0AHaReQZcj0kobrDwz2leEgWD85l5TnZXsI9H/0r
+0ZGBUVJAC9vJKjdevkfRffEIg==
Вывод. В сегодняшней статье был рассмотрен пример создание пресета, который собирает информацию о товарах, со страниц одной из категорий сайта. Собранные данные помещаются в файл формата yml, который используется для импорта в сервис Я.Маркета. В примере было продемонстрировано с какой легкостью можно решить подобную задачу, используя разные возможности и инструменты A-Parser. Данный пример может быть использован как в оригинальном виде, так и служить основой для создания файлов более сложной структуры, если того требует задание.
-
Вступайте в наш Telegram чат: https://t.me/a_parser Нас уже 2600+ и мы растем!Скрыть объявление
Выгрузка товаров для Я.Маркета в формате YML
Описана последовательность создания пресета для выгрузки товаров в формат YML