Скомпановать две повторяющиеся границы парсинга

Тема в разделе "Повторяющиеся границы парсинга", создана пользователем smurf_da, 5 янв 2020.

  1. smurf_da

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

    Регистрация:
    19 янв 2019
    Сообщения:
    15
    Город:
    Москва
    Подскажите пожалуйста каким макросом или конструкцией можно скомпановать данные из 2х разных повторяющихся границ?

    Задача собрать данные со страницы, где находятся товары одного типа с разными характеристиками. (есть родовой товар и его цвето-размер или товар с разным весом)

    При этом в одном блоке html кода находиться одна часть данных о товаре, а во втором другая. Сами блоки не включают друг друга.

    Сопоставление 1к1.

    Смог разбить по разным повторяющимся границам, но не понимаю как сейчас объединить в плоскую таблицу информацию из этих циклов обработки повторяющихся границ.



    Пример:
    Есть граница повторяющегося парсинга 1

    <CD_CYCLE_GRAN_1!> включает в себя
    [GRAN1][CSVCS]<CD_GRAN_2!>[CSVCS][GRAN3][CSVCS][GRAN4][CSVCS]<CD_GRAN_5!>[CSVCS]<CD_GRAN_6!>[CSVCS]<CD_GRAN_7!>

    Есть граница повторяющегося парсинга 2
    <CD_CYCLE_GRAN_2!> включает в себя

    [GRAN8][CSVCS]<CD_GRAN_9!>[CSVCS][GRAN10]


    Суть такая что нужно вывести информацию из этих 2х циклов в одну таблицу.

    т.е. чтобы получилась такая строка.

    [GRAN1][CSVCS]<CD_GRAN_2!>[CSVCS][GRAN3][CSVCS][GRAN4][CSVCS]<CD_GRAN_5!>[CSVCS]<CD_GRAN_6!>[CSVCS]<CD_GRAN_7!>[CSVCS][GRAN8][CSVCS]<CD_GRAN_9!>[CSVCS][GRAN10

    Циклы идут 1 к 1 т.е. первый цикл первой повторяющейся границы парсинга сопоставим с информацией из первого цикла во второй повторяющейся границы парсинга

    Но т.к. циклы на сколько я понял в шаблоне вывода записываются последовательно др. за другом, у меня это пока не получается
     
  2. Root

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

    Регистрация:
    10 мар 2010
    Сообщения:
    14.818
    Город:
    Барнаул
    Вам нужно ознакомиться с материалами системы помощи.

    Ссылки недоступны для гостей
     
    smurf_da нравится это.
  3. smurf_da

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

    Регистрация:
    19 янв 2019
    Сообщения:
    15
    Город:
    Москва
    Благодарю. Странно, сам ковырялся, не нашел эту страницу
     
    Root нравится это.
  4. smurf_da

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

    Регистрация:
    19 янв 2019
    Сообщения:
    15
    Город:
    Москва
    Да, все получилось, спасибо большое
     
    Root нравится это.
  5. smurf_da

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

    Регистрация:
    19 янв 2019
    Сообщения:
    15
    Город:
    Москва
    Добрый день @Root
    Подскажите пожалуйста как можно спарсить характеристики со страницы (снимок.png)
    и привести к следующему виду (на сколько понимаю заменить ";" на значение ранее спарсеной границы):

    Производитель:Ссылки недоступны для гостей; ....какие-то характеристики...;Тип HDMI:v1.3;Входные разъемы:Вход HDMI х 2; Входные разъемы:Вход VGA х 2; Входные разъемы:Вход DVI х 1;Входные разъемы:Вход S-Video х 1;Входные разъемы:Вход "Composite Video" х 1;Входные разъемы:Вход "Component Video/3RCA" х 1; и т.д.

    Задача по сути название характеристики "Входные разъемы" например, подставить перед каждым значением этой характеристики. В место "Входные разъемы" может быть другое название характеристики товара.

    На текущий момент с помощью повторяющихся границ я смог сделать так, а вот дальше застрял намертво:
    Производитель:Ссылки недоступны для гостей; ....какие-то характеристики...;Тип HDMI:v1.3;Входные разъемы:Вход HDMI х 2; Вход VGA х 2; Вход DVI х 1;Вход S-Video х 1;Вход "Composite Video" х 1;Вход "Component Video/3RCA" х 1; и т.д.
     

    Вложения:

  6. Root

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

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

    Под такую специфическую задачу нужно делать специализированную функцию. Такая функция навряд ли еще кому-нибудь потребуется.
     
  7. smurf_da

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

    Регистрация:
    19 янв 2019
    Сообщения:
    15
    Город:
    Москва
    решил REPLACE'ом кажется, допилю до конечного варианта, выложу
     
  8. smurf_da

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

    Регистрация:
    19 янв 2019
    Сообщения:
    15
    Город:
    Москва
    Решил по сути вот так вот:
    Задал гранцу парсинга, где определил место для работы с повторяющимися границами парсинга.
    Далее в повторяющейся границе задал такую конструкцию:
    Код:
    [GRAN12]:[REPLACE(;|;[GRAN12]:)][GRAN13][/REPLACE]
    Где:
    [GRAN12] - поиск наименования характеристики в повторяющейся границе парсинга (в моем случае ПГ2)
    [GRAN13] - поиск значений характеристики в повторяющейся границе парсинга (в моем случае ПГ2)
    А Replace - если я правильно в нем разобрался, заменяет все ";", которыми разделены значения характеристик на нужное мне наименование характеристики ;[GRAN12]: (; и ; - это мне для соблюдения нужного формата нужно было)

    Проект во вложении. Вроде все ок.
     

    Вложения:

    • Project.cdp
      Размер файла:
      316,7 КБ
      Просмотров:
      1
    Последнее редактирование: 13 сен 2020
    Root нравится это.

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