Как повторно загрузить если Результирующий документ оказался пустым?

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

  1. kofe

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

    Регистрация:
    22 май 2019
    Сообщения:
    47
    Иногда, по непонятным причинам по некоторым ссылкам (то одни, то другие, то больше, то меньше) парсинг не проходит, в логе по таким ссылкам: "Результирующий документ оказался пустым".

    (ctrl+h) -> поле количество попыток загрузки документов не помогает (прилагаю картинку).

    Безымянный рисунок.png

    Приходиться пропущенные ссылки вручную добавлять и заново парсить.

    Прошу подсказать как можно решить вопрос.
     
    Последнее редактирование: 26 июн 2019
  2. Root

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

    Регистрация:
    10 мар 2010
    Сообщения:
    11.736
    Пустой документ - не ошибка загрузки и это должно быть понятно. Программа получила данные от сайта, просто в результате работы шаблона вывода в результат никакие данные не попали.

    Решения два:

    1)
    2019-06-26_15-29-38.png

    2019-06-26_15-30-47.png

    2) Использовать конструкцию макросов шаблона вывода:
    Код:
    [CHECKENTRY([ANYTEXT])]Сюда поместите макрос границы парсинга, которую проверять на пустоту, например <CD_GRAN_3!>[THENTEXT]СЮДА ПОМЕСТИТЕ ВЕСЬ ТЕКСТ ШАБЛОНА ВЫВОДА[ELSETEXT][RELOADDOCUMENT][/CHECKENTRY]
     
    kofe нравится это.
  3. kofe

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

    Регистрация:
    22 май 2019
    Сообщения:
    47
    Здравствуйте! Благодарю за предыдущий ответ. Использую конструкцию по второму примеру:

    [CHECKENTRY([ANYTEXT])]<CD_GRAN_14!>[THENTEXT]
    <PHP_SCRIPT=Ссылки недоступны для гостей, зарегистрируйтесь или авторизуйтесь на форуме!
    all_data=[DATAENCODE]<CD_CYCLE_GRAN_1!>[/DATAENCODE]
    </PHP_SCRIPT>
    [ELSETEXT][RELOADDOCUMENT]
    [/CHECKENTRY]

    По каким-то причинам все же иногда получаю "Результирующий документ оказался пустым", и повторного прохождения по такому вэб документу не наблюдаю, хотя количество попыток загрузки документов - установлено "3".

    1.png
    Безымянный рисунок.png

    Когда пропущенные документы запускаю заново или через окно предпросмотра (ctrl+f2 или f10), то все гладко проходит т. е. не могу эмулировать ошибку и посмотреть расширенный лог, чтобы понять причину.

    Прошу подсказать как научить программу повторно проходить по пустым вэб документам?

    Второй вопрос: как т. е. каким-то образом в подобном случае (когда через ctrl+f2 или f10 все проходит) установить причину почему пропускает?
     
    Последнее редактирование: 12 июл 2019
  4. kofe

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

    Регистрация:
    22 май 2019
    Сообщения:
    47
    Насколько я понимаю, в моей конструкции по какой-то причине иногда не срабатывает PHP_SCRIPT.

    Вопрос: как научить программу повторно проходить по вэб документам если не сработал PHP_SCRIPT?
     
  5. Djahat

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

    Регистрация:
    14 янв 2013
    Сообщения:
    487
    Город:
    Мордор
    В скрипте PHP - сделать echo -> оно вернется в шаблон CD
    В шаблоне CD - сделать проверку CHECKENTRY , если эхо такое как жду - то [RELOADDOCUMENT] или ADDURL в зависимости от задачи
    Я бы так сделал
     
    kofe нравится это.
  6. kofe

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

    Регистрация:
    22 май 2019
    Сообщения:
    47
    Благодарю!

    Прошу подсказать как принять echo из пхп скрипта в шаблон CD?

    echo пхп скрипта я могу видеть только в последней строке лога, через окно предпросмотра (ctrl+f2 или f10).

    Безымянный рисунок.png
     
    Последнее редактирование: 12 июл 2019
  7. Root

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

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

    Не нужно пренебрегать логом.

    Ссылки недоступны для гостей, зарегистрируйтесь или авторизуйтесь на форуме!

    [CHECKENTRY] выполняется до PHP_SCRIPT
    [CHECKENTRY2] - после
     
  8. kofe

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

    Регистрация:
    22 май 2019
    Сообщения:
    47
    CHECKENTRY2 меня спас, благодарю!

    Изначальная конструкция сменилась на:

    Код:
    [CHECKENTRY2(echo пхп скрипта если он не сработал)]▒
    <PHP_SCRIPT=https://xxx.php>▒
    all_data=[DATAENCODE]<CD_CYCLE_GRAN_1!>[/DATAENCODE]▒
    </PHP_SCRIPT>▒
    [THENTEXT][RELOADDOCUMENT]▒
    [ELSETEXT]▒
    Ok▒
    [/CHECKENTRY2]▒
    
    * ▒ - Medium shade в конце строки - очень полезная штука!

    Отдельная благодарность #Djahat за логику реализации.
     
    Последнее редактирование: 14 июл 2019
    Dydaevskiy и Root нравится это.
  9. kagorec

    kagorec Администратор Команда форума Администратор

    Регистрация:
    3 янв 2011
    Сообщения:
    3.694
    Город:
    Riga
    Решение описал в соседней вашей похожей теме.
     
    Dydaevskiy и Root нравится это.

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