Передача редиректной ссылки из макроса WBApp

Тема в разделе "WBAppIE", создана пользователем gans, 31 янв 2018.

Метки:
  1. gans

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

    Регистрация:
    21 апр 2014
    Сообщения:
    309
    Доброго дня!

    Заданы обычные границы, которые обрабатываются нормально, в следующей границе нужно получить адрес сайта, который нужно подтянуть через wbapp и вывод макросом WBAPPCURRENTURL. Если ставлю галку DOM и подключаю проект wbapp, перестают работать обычные границы(разный код), но выводится адрес сайта. С использованием DOM для всех границ код получается не таким, как нужно. Как правильно запустить wbapp в отдельной границе и вывести адрес сайта через WBAPPCURRENTURL?

    Файлы в аттаче.

    Заранее благодарю!
     

    Вложения:

    • cd.zip
      Размер файла:
      8,1 КБ
      Просмотров:
      2
    Последнее редактирование: 31 янв 2018
  2. xLime

    xLime Well-Known Member Супер Модератор Модератор

    Регистрация:
    4 сен 2017
    Сообщения:
    401
    Добрый день.
    Внимательно изучайте сайт прежде чем пытаться использовать IE DOM. Ссылки, которые вы пытаетесь получить, есть в коде сайта.
    Исправленный проект во вложении.
    [​IMG]
     

    Вложения:

  3. gans

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

    Регистрация:
    21 апр 2014
    Сообщения:
    309
    Не всё так просто, а было бы просто - не открывал бы тему! ;)

    Если вы внимательно посмотрите на свой скриншот, то увидите, исходную ссылку в границе 4 . Чтобы получить результат, как на вашем скриншоте, было бы достаточно вставить <CD_DOCURL!>. Мне же нужен адрес сайта. В данном случае - thomaskeller.com/perseny. В коде страницы его нет. В коде есть некий хэш и витжет для клика(см. код ниже). Вот когда кликаю на ссылку, открывается сайт thomaskeller.com/perseny.

    Код:
    <div class="blEntry website" data-ahref="PF2VEtVCg8L" data-column="2" data-trackingkey="URL_EATERY" data-eventname="bl_contact_website" onclick="ta.prwidgets.call('handlers.onWebLinkClicked', event, this)">
     
  4. xLime

    xLime Well-Known Member Супер Модератор Модератор

    Регистрация:
    4 сен 2017
    Сообщения:
    401
    Ссылки отличаются. Выводы я сделал из той информации и проекта, что вы предоставили.
    Скрытое содержимое:
    **Скрытое содержимое: доступно при наличии 1 постов.**
    В любом случае, настраиваете границы таким образом, чтобы программа захватывала информацию с разными библиотеками (в прикрепленном мною выше проекте они уже так и настроены). Если что пользуетесь глобальной заменой ctrl+shift+r.

    [​IMG]

    При чем здесь thomaskeller.com/perseny и откуда вы его взяли я не понимаю. Если я неправильно понял проблему, тогда ждем ответов других форумчан.

    [UPDATE]
    Понял откуда взялся. Как вы пытаетесь его получить? Мне кажется для этого необходимо сначала настроить событие клика, а потом уже макрос [WBAPPCURRENTURL].
     
    Последнее редактирование: 1 фев 2018
  5. gans

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

    Регистрация:
    21 апр 2014
    Сообщения:
    309
    Судя по всему, правильно поняли, откуда взялся. В коде исходной страницы сайта нет. Переход на сайт происходит по клику. Событие в wbapp настроено - отрабатывает правильно. Полученный по клику сайт показывает.
    Проблема в том, что, если я ставлю галку на Использовать DOM во вкладке контент и вывожу ссылку макросом [WBAPPCURRENTURL], то перестают работать первые три границы. Если галку не ставлю, а вставляю макрос [WBAPPCURRENTURL] или WBAPP(D:\temp\cd\tripadvisor.wbapp)][CDDATA:1][/CDDATA][/WBAPP][WBAPPCURRENTURL(0)] , то не работает. Возможно, неправильно использую макросы.

    Вопрос состоит в том, как обработать первые три границы без DOM, а четвертую с DOM. Как-то так. Надеюсь, понятно изложил.

    PS В первом посте я объяснял, почему не подходит вариант с настройкой всех границ с DOM - сильно информация меняется.
     
    Последнее редактирование: 1 фев 2018
    xLime нравится это.
  6. gans

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

    Регистрация:
    21 апр 2014
    Сообщения:
    309
    Кажется, понял, в чем проблема, но вопрос остается открытым.

    Судя по логу, [WBAPPCURRENTURL] выполняется быстрее, чем [WBAPP(D:\temp\cd\tripadvisor.wbapp)][CDDATA:1][/CDDATA][/WBAPP]. WBAPP_F не помог - также выполняется позже.

    [​IMG]
     
    Последнее редактирование: 1 фев 2018
  7. xLime

    xLime Well-Known Member Супер Модератор Модератор

    Регистрация:
    4 сен 2017
    Сообщения:
    401
    Программа отрабатывает корректно. Во вложении пример проекта.
    Я правильно понимаю, у вас не срабатывает клик в настройках wbapp?
     

    Вложения:

  8. gans

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

    Регистрация:
    21 апр 2014
    Сообщения:
    309
    Wbapp при настройке срабатывает как положено. Мне нужно, чтобы первые три границы парсились без DOM, а четвертая - с DOM. Четвертая граница - клик в wbapp и передача url в CD и запись в ячейку.

    В настройках галку не ставлю. В шаблоне вывода для границы 4 такая конструкция: [WBAPP(D:\temp\cd\tripadvisor.wbapp)][CDDATA:1][/CDDATA][/WBAPP][WBAPPCURRENTURL(1)]. В итоге, граница 4 не срабатывает.

    [​IMG]

    И, судя по всему, граница 4 не срабатывает потому, что [WBAPPCURRENTURL(1)] срабатывает быстрее, чем WBAPP.
    WBAPP_F не помог.
    [​IMG]
     
  9. Kreol

    Kreol Модератор Команда форума Модератор

    Регистрация:
    6 янв 2013
    Сообщения:
    2.666
    Здравствуйте
    Неужели не проще перенастроить проэкт чтоб он просто через DOM все забирал?
     
    xLime нравится это.
  10. gans

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

    Регистрация:
    21 апр 2014
    Сообщения:
    309
    Добрый день! Вас не затруднит загрузить мой проект из первого поста, включить DOM для контента, нажать на Задание границы парсинга и найти индекс? В самой первой ссылке это 10065.
     
    Последнее редактирование: 2 фев 2018
  11. Kreol

    Kreol Модератор Команда форума Модератор

    Регистрация:
    6 янв 2013
    Сообщения:
    2.666
    Там все намного проще
    Теперь все работает.
    Изучайте
     

    Вложения:

  12. gans

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

    Регистрация:
    21 апр 2014
    Сообщения:
    309
    У меня при включенном DOM вообще из кода почти всё пропадает при задании границ парсинга. Но сам сайт открывается. Как будто во фрейме работает. Причем нормально работает и виден код в IE 11.
     
  13. Kreol

    Kreol Модератор Команда форума Модератор

    Регистрация:
    6 янв 2013
    Сообщения:
    2.666
    Какая у вас версия CD? и полная версия IE
     
  14. Kreol

    Kreol Модератор Команда форума Модератор

    Регистрация:
    6 янв 2013
    Сообщения:
    2.666
    Вот что выдает выдача
     

    Вложения:

  15. gans

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

    Регистрация:
    21 апр 2014
    Сообщения:
    309
    Спасибо! Но вы прислали мне практически то же самое, что и было. :) Придётся объяснять заново. Необходимо спарсить Название, Адрес, Телефон, Сайт(не ссылку на tripadvisor). Первые границы - это элементарно. Загвоздка в адресе сайта!

    Адрес сайта хитро скрыт. Его нет в коде страницы. Есть некий хэш и витжет для перехода. код этого добра я приводил выше. Можете попробовать. Для этой ссылки Ссылки недоступны для гостей адрес сайта - Ссылки недоступны для гостей .URL виден при переходе на него.

    Т.е. чтобы получить адрес сайта и передать его в CD мне нужно событие в wbapp. Тут тоже всё элементарно. Создаю клик по ссылке, ссылку передаю в CD, вывожу в нужной границе.

    Вроде бы всё просто. Но, когда я включаю галку DOM для контента и пытаюсь задать границу, tripadvisor начинает работать как будто бы во фрейме(только сейчас заметил). Поэтому я и просил с DOM открыть задание границы парсинга и попробовать найти индекс. Из информации там остаётся название, и то, не совсем такое, как при задании границ без DOM. Зато парсится адрес сайта.

    Вижу выход - Название, Адрес и Телефон парсить без DOM, адрес сайта - с DOM.

    Совместить пытаюсь так: убираю галку DOM и в границе адреса сайта использую такую конструкцию [WBAPP(D:\temp\cd\tripadvisor.wbapp)][CDDATA:1][/CDDATA][/WBAPP][WBAPPCURRENTURL(1)]. Но она не срабатывает(WBAPP_F пробовал). Моё предположение, почему, тоже приводил выше - WBAPPCURRENTURL срабатывает быстрее, чем WBAPP.

    Ещё можете что-то посоветовать?

    PS Может быть, это у меня такие проблемы с DOM? Если не очень сложно, попробуйте найти в коде при задании страниц адрес и телефон. Только именно с включенным DOM.
     
    Последнее редактирование: 2 фев 2018
  16. Kreol

    Kreol Модератор Команда форума Модератор

    Регистрация:
    6 янв 2013
    Сообщения:
    2.666
    Покажите на картинке, какой именно адрес сайта вам нужен? Прочитал 4 раза, так и не понял.
     
    kagorec нравится это.
  17. xLime

    xLime Well-Known Member Супер Модератор Модератор

    Регистрация:
    4 сен 2017
    Сообщения:
    401
    [​IMG]
     
    gans нравится это.
  18. gans

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

    Регистрация:
    21 апр 2014
    Сообщения:
    309
    xLime правильно запостил скриншот.

    Добавлю, что в IE 11 сайт открывается нормально и в коде нужная информация видна.

    Версия CD 11.1.0000300 Ultimate.
    Версия IE 11.0.9600.17280
     
    Последнее редактирование: 2 фев 2018
  19. Kreol

    Kreol Модератор Команда форума Модератор

    Регистрация:
    6 янв 2013
    Сообщения:
    2.666
    Ну в общем вот такой есть выход, но там отлавливать надо ссылки, он не все находит.
    Думаю надо попросить Сергея дописать макрос, который просто будет вставлять редиректную ссылку в код страницы
    Например склеивать данные в виде [GETHTML]####[GETREDIRECTURL]%%%% и потом просто достать обычной границей.
     

    Вложения:

    gans нравится это.
  20. gans

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

    Регистрация:
    21 апр 2014
    Сообщения:
    309
    Спасибо! Работает. Но, к сожалению, не всё. Для меня это недопустимо. Не хотелось бы отлавливать ссылки в проекте в 10000 ссылок. Надеюсь, Сергей обратит внимание! Я делал предложение сделать так, чтобы макрос WBAPP срабатывал раньше, чем WBAPPCURRENTURL в отдельной границе, без DOM, для всего проекта. Возможно, это также могло бы помочь.

    tripadvisor - популярный сайт. Странно, что подобные вопросы не возникли раньше.
     
    Последнее редактирование: 3 фев 2018

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