На сайте есть страницы и с выбором опций, и без

Тема в разделе "Решение различных задач по парсингу", создана пользователем Masster, 3 июн 2021.

  1. Masster

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

    Регистрация:
    28 апр 2021
    Сообщения:
    18
    Добрый вечер!
    На сайте есть страницы и с выбором опций, и без. Можно ли как-от спарсить их за один раз? Для страниц с опциями парсил через повторяющиеся границы, с пхп скриптом и HANDLEJSON
    То есть в настройке <CD_CYCLE_GRAN_1!> у меня:

    <CD_DOCURL!>[CSVCS]<CD_GRAN_1!>[CSVCS]<CD_GRAN_2!>[CSVCS][HANDLEJSON]
    {OUT_TEMPLATE}{KEY(variantDom)}[CSVCS]{KEY(id)}[CSVCS]{KEY(displayAmo)}[CSVCS]{KEY(SVK)}{/OUT_TEMPLATE}
    ▒{KEY()}
    ▒{KEY({LEVEL})}
    ▒{LIST()}{/LIST}
    {VALUES_REPLACE}{/VALUES_REPLACE}
    {PARAMS}values_json_decode{/PARAMS}
    {LIST_SEP}{br2}{/LIST_SEP}
    {JSON_DATA}
    <PHP_SCRIPT=Ссылки недоступны для гостей
    <HEADERS></HEADERS>
    <REPLACE></REPLACE>
    </PHP_SCRIPT>
    {/JSON_DATA}
    [/HANDLEJSON]

    Все замечательно парсится. НО, если на странице нет выбора опции, то на выходе получаю "Результирующий документ оказался пустым."
    Как я понял, происходит это потому, что для переменной, которая подставляется в [VALUE] из повторяющихся границ нельзя подобрать одинаковые начало и конец парсинга. Они в коде отображаются абсолютно по-разному (productID и SKUID).
    В принципе, я эту проблему решил - просто спарсил все с записью в файл ссылок, с которых информация не выгрузилась, а потом спарсил их уже с обычными границами - благо их тут всего 3 штуки нужно было прописать (хотя сейчас понимаю, что второй раз можно было только повторяющиеся поменять, которые в [VALUE] подставляются).
    Не факт, что еще когда-то с таким столкнусь, поэтому если тут надо как-то заморачиваться, то не нужно этого делать. Просто интересно - может есть какое-то легкое решение, которое я упустил, так как только осваиваю КД, чтобы все это спарсить за раз?
     
    Последнее редактирование: 3 июн 2021
  2. Achronis

    Achronis Well-Known Member Пользователи

    Регистрация:
    30 июл 2020
    Сообщения:
    64
    Город:
    Барнаул
    Здравствуйте, в данном случае вы можете использовать макрос [IFNIL].
     
    Masster и Root нравится это.
  3. Root

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

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

    [IFNIL2], так как он выполняется после PHP_SCRIPT и HANDLEJSON.
     
    Masster и Achronis нравится это.
  4. Masster

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

    Регистрация:
    28 апр 2021
    Сообщения:
    18
    Спасибо! Работает.
    З,Ы. Не перестаю удивляться возможностям КД - такой огромный и мощный набор инструментов. Кажется, что полностью освоить программу просто нереально)))
     
    Root нравится это.

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