Вывод контента в формате YML прайса

Тема в разделе "Разное", создана пользователем TeslaCo, 30 июн 2015.

  1. TeslaCo

    TeslaCo Member Пользователи

    Регистрация:
    4 мар 2014
    Сообщения:
    211
    Здравствуйте,
    подскажите как можно вывести результат парсинга (товаров) в формате YML прайса
    пример:
    Скрытое содержимое:
    **Скрытое содержимое: доступно при наличии 1 постов.**
    Может есть какой то макрос или php скрипт.
    Заранее спасибо за любые ответы.
     
    Последнее редактирование: 30 июн 2015
  2. Root

    Root Администратор Администратор

    Регистрация:
    10 мар 2010
    Сообщения:
    14.818
    Город:
    Барнаул
    Здравствуйте.

    Простите, но таких функционала в программе сейчас нет и наврятли появится. Вашу просьбу мы приняли к сведению.

    С уважением к вам, Сергей.
     
  3. TeslaCo

    TeslaCo Member Пользователи

    Регистрация:
    4 мар 2014
    Сообщения:
    211
    Тогда давайте разбираться вместе.
    Загвоздка в том что должен быть все в одном файле.По порядку.
    Начинается файл:
    Код:
    <yml_catalog date="2015-07-30 14:47">
    <shop>
    <name>tesla</name>
    <company>tesla</company>
    <url>http://сайт.ru/</url>
    <phone>+380 (93) 00-00-000</phone>
    <platform>ocStore</platform>
    <version>1.5.4.1.2</version>
    <currencies>
    <currency id="RUB" rate="1"/>
    </currencies>
    <categories>
    <category id="7162">Каталог</category>
    <category id="7163" parentId="7162">Женская одежда</category>
    <category id="7170" parentId="7163">Пиджаки и Куртки</category>
    </categories>
    <offers>
    Заканчивается файл:
    Код:
    </offers>
    </shop>
    </yml_catalog>
    Середина файла сами товары, которые информация о которых берутся с самих ссылок во время парсинга:
    Код:
    <offer id="230008" available="true" >
    <url>http://tesla-co.ru/pidzhak-burberry</url>
    <price>850.00</price>
    <currencyId>RUB</currencyId>
    <categoryId>7170</categoryId>
    <picture>http://tesla-co.ru/image/data/skhouse-17-04-2015/125.jpg</picture>
    <delivery>true</delivery>
    <name>Пиджак &amp;quot;BURBERRY&amp;quot;</name>
    <vendor></vendor>
    <vendorCode>3508529</vendorCode>
    <description><![CDATA[Костюмная ткань, Украина
    ]]></description>
    </offer>
    На сайте который нужно парсить внутри каждого товара есть меню со всеми категориями. Каждый товар и каждая категория имеет свой ID(если нет то можете поиск заменой или макросом <STRTOINTID> присвоить каждой категории числовой ID). Идея заключается в том что бы сделать шаблон вывода такого вида
    Код:
    <yml_catalog date="2015-07-30 14:47">
    <shop>
    <name>tesla</name>
    <company>tesla</company>
    <url>http://сайт.ru/</url>
    <phone>+380 (93) 00-00-000</phone>
    <platform>ocStore</platform>
    <version>1.5.4.1.2</version>
    <currencies>
    <currency id="RUB" rate="1"/>
    </currencies>
    <categories>
    <category id="7162">Каталог</category>
    <category id="7163" parentId="7162">Женская одежда</category>
    <category id="7170" parentId="7163">Пиджаки и Куртки</category>
    </categories>
    <offers>
    <offer id="230008" available="true" >
    <url>http://tesla-co.ru/pidzhak-burberry</url>
    <price>850.00</price>
    <currencyId>RUB</currencyId>
    <categoryId>7170</categoryId>
    <picture>http://tesla-co.ru/image/data/skhouse-17-04-2015/125.jpg</picture>
    <delivery>true</delivery>
    <name>Пиджак &amp;quot;BURBERRY&amp;quot;</name>
    <vendor></vendor>
    <vendorCode>3508529</vendorCode>
    <description><![CDATA[Костюмная ткань, Украина
    ]]></description>
    </offer>
    </offers>
    </shop>
    </yml_catalog>

    но это результат парсинга одной ссылки, а если несколько то получается так:
    (между <offer> и </offer> будет [Информация о товаре, которая будет парситься] что бы не дублировать по 100 информацию)
    Код:
    <yml_catalog date="2015-07-30 14:47">
    <shop>
    <name>tesla</name>
    <company>tesla</company>
    <url>http://сайт.ru/</url>
    <phone>+380 (93) 00-00-000</phone>
    <platform>ocStore</platform>
    <version>1.5.4.1.2</version>
    <currencies>
    <currency id="RUB" rate="1"/>
    </currencies>
    <categories>
    <category id="7162">Каталог</category>
    <category id="7163" parentId="7162">Женская одежда</category>
    <category id="7170" parentId="7163">Пиджаки и Куртки</category>
    </categories>
    <offers>
    <offer id="230008" available="true" >
    [Информация о товаре, которая будет парситься]
    </offer>
    </offers>
    </shop>
    </yml_catalog>
    <yml_catalog date="2015-07-30 14:47">
    <shop>
    <name>tesla</name>
    <company>tesla</company>
    <url>http://сайт.ru/</url>
    <phone>+380 (93) 00-00-000</phone>
    <platform>ocStore</platform>
    <version>1.5.4.1.2</version>
    <currencies>
    <currency id="RUB" rate="1"/>
    </currencies>
    <categories>
    <category id="7162">Каталог</category>
    <category id="7163" parentId="7162">Женская одежда</category>
    <category id="7170" parentId="7163">Пиджаки и Куртки</category>
    </categories>
    <offers>
    <offer id="230009" available="true" >
    [Информация о товаре, которая будет парситься]
    </offer>
    </offers>
    </shop>
    </yml_catalog>
    <yml_catalog date="2015-07-30 14:47">
    <shop>
    <name>tesla</name>
    <company>tesla</company>
    <url>http://сайт.ru/</url>
    <phone>+380 (93) 00-00-000</phone>
    <platform>ocStore</platform>
    <version>1.5.4.1.2</version>
    <currencies>
    <currency id="RUB" rate="1"/>
    </currencies>
    <categories>
    <category id="7162">Каталог</category>
    <category id="7163" parentId="7162">Женская одежда</category>
    <category id="7170" parentId="7163">Пиджаки и Куртки</category>
    </categories>
    <offers>
    <offer id="230010" available="true" >
    [Информация о товаре, которая будет парситься]
    </offer>
    </offers>
    </shop>
    </yml_catalog>
    а надо что бы получилось:
    Код:
    <yml_catalog date="2015-07-30 14:47">
    <shop>
    <name>tesla</name>
    <company>tesla</company>
    <url>http://сайт.ru/</url>
    <phone>+380 (93) 00-00-000</phone>
    <platform>ocStore</platform>
    <version>1.5.4.1.2</version>
    <currencies>
    <currency id="RUB" rate="1"/>
    </currencies>
    <categories>
    <category id="7162">Каталог</category>
    <category id="7163" parentId="7162">Женская одежда</category>
    <category id="7170" parentId="7163">Пиджаки и Куртки</category>
    </categories>
    <offers>
    <offer id="230008" available="true" >
    [Информация о товаре, которая будет парситься]
    </offer>
    <offer id="230009" available="true" >
    [Информация о товаре, которая будет парситься]
    </offer>
    <offer id="230010" available="true" >
    [Информация о товаре, которая будет парситься]
    </offer>
    </offers>
    </shop>
    </yml_catalog>
     
    Последнее редактирование: 30 июл 2015
  4. TeslaCo

    TeslaCo Member Пользователи

    Регистрация:
    4 мар 2014
    Сообщения:
    211
    Вот теперь вопрос, как отфильтровать данные что бы к примеру информация между блоками <offer> и </offer> были по средине файла
    Начало и конец отфильтровались вот так:
    Код:
    <yml_catalog date="2015-07-30 14:47">
    <shop>
    <name>tesla</name>
    <company>tesla</company>
    <url>http://сайт.ru/</url>
    <phone>+380 (93) 00-00-000</phone>
    <platform>ocStore</platform>
    <version>1.5.4.1.2</version>
    <currencies>
    <currency id="RUB" rate="1"/>
    </currencies>
    <categories>
    <category id="7162">Каталог</category>
    <category id="7163" parentId="7162">Женская одежда</category>
    <category id="7170" parentId="7163">Пиджаки и Куртки</category>
    </categories>
    <offers>
    <yml_catalog date="2015-07-30 14:47">
    <shop>
    <name>tesla</name>
    <company>tesla</company>
    <url>http://сайт.ru/</url>
    <phone>+380 (93) 00-00-000</phone>
    <platform>ocStore</platform>
    <version>1.5.4.1.2</version>
    <currencies>
    <currency id="RUB" rate="1"/>
    </currencies>
    <categories>
    <category id="7162">Каталог</category>
    <category id="7163" parentId="7162">Женская одежда</category>
    <category id="7170" parentId="7163">Пиджаки и Куртки</category>
    </categories>
    <offers>
    <yml_catalog date="2015-07-30 14:47">
    <shop>
    <name>tesla</name>
    <company>tesla</company>
    <url>http://сайт.ru/</url>
    <phone>+380 (93) 00-00-000</phone>
    <platform>ocStore</platform>
    <version>1.5.4.1.2</version>
    <currencies>
    <currency id="RUB" rate="1"/>
    </currencies>
    <categories>
    <category id="7162">Каталог</category>
    <category id="7163" parentId="7162">Женская одежда</category>
    <category id="7170" parentId="7163">Пиджаки и Куртки</category>
    </categories>
    <offers>
    <offer id="230008" available="true" >
    [Информация о товаре, которая будет парситься]
    </offer>
    <offer id="230009" available="true" >
    [Информация о товаре, которая будет парситься]
    </offer>
    <offer id="230010" available="true" >
    [Информация о товаре, которая будет парситься]
    </offer>
    </offers>
    </shop>
    </yml_catalog>
    </offers>
    </shop>
    </yml_catalog>
    </offers>
    </shop>
    </yml_catalog>
    И удалить дубли строк. (отфильтровать и удалить дубли строк между определенных тегах нужно в конце парсинга)
    Подскажите какими макросами можно реализовать это
    Заранее благодарен!
     
    Последнее редактирование: 30 июл 2015
  5. TeslaCo

    TeslaCo Member Пользователи

    Регистрация:
    4 мар 2014
    Сообщения:
    211
    Или что бы вообще по простому, как добавить в начало и вконец результирующего файла какой то текст
     
  6. Root

    Root Администратор Администратор

    Регистрация:
    10 мар 2010
    Сообщения:
    14.818
    Город:
    Барнаул
    Здравствуйте.

    В редакторе шаблона вывода (ctrl+2) Обратите внимание на строку заголовка и нижнюю строку.

    С уважением к вам, Сергей.
     
  7. TeslaCo

    TeslaCo Member Пользователи

    Регистрация:
    4 мар 2014
    Сообщения:
    211
    очень нужен php скрипт который будет преобразововать данные о товаре которые парсятся сразу в формат YML прайса и будет сохранять их в определенную директорию, в определенный файл
    вот как выглядит YML прайс
    Скрытое содержимое:
    **Скрытое содержимое: доступно при наличии 1 постов.**
    за деньги.
     
    Последнее редактирование: 31 июл 2015
  8. mars_m

    mars_m New Member Пользователи

    Регистрация:
    27 сен 2013
    Сообщения:
    40
    Не так давно задавался таким же вопросом, мне кажется можно сделать без доп скриптов, но придется 3 раза парсить сайт.

    1. собираем все возможные категории в какой нибудь формат типа можно сразу в правило замены

    категория///подкатегория///подкатегория|ID (можно генерировать)

    2. Парсим и готовим часть файла с категориями.
    Будет что-то типа:

    <category id="[REPLACE(категория///подкатегория///подкатегория|ID)][/REPLACE]" parentId="[REPLACE(///{skip}|{break}категория///подкатегория///подкатегория|ID[/REPLACE]">[REPLACE(///{skip}|{skip}[/REPLACE]</category>

    3. Парсим товары

    <offer id="230008" available="true" >
    [Информация о товаре, которая будет парситься]
    </offer>

    Соответсвенно теги категорий тоже с заменой категория///подкатегория///подкатегория|ID


    в шапку вставляем начало + парсинг категорий, в дно ставим конец YML
     
  9. TeslaCo

    TeslaCo Member Пользователи

    Регистрация:
    4 мар 2014
    Сообщения:
    211
    Да, это самый простой способ, но нужно обязательно этот процесс пустить по расписанию и зациклить
    к тому же если товаров больше млн, то редактирование txt будет затруднительно
     
    smurf_da нравится это.

Поделиться этой страницей