Урок №24. Обработка Javascript пагинации
На этом видео мы покажем как создать сценарий для прохода по пагинации, реализованной с помощью Javascript. Это нам позволит собрать все ссылки на вебстраницы с данными из каталога, переключение между страницами которого реализовано с помощью Javascript. Другими словами, в случаях, когда на страницы пагинации нельзя собрать ссылки, а можно только перейти с помощью клика. Для лучшего восприятия информации, рекомендую предварительно посмотреть видео о настройке парсинга интернет магазина, а также видео о парсинге с авторизацией.
Не получается настроить сбор ссылок? Возможно причина кроется в том, что пагинация на сайте реализована при помощи Javascript. Посмотрев данную видеоинструкцию вы быстро научитесь настраивать сбор данных с таких сайтов.
Для примера, настроим сбор информации о товарах интернет магазина. В данном случае нам понадобиться Браузер для загрузки страницы. Чтобы реализовать заявленную задачу, создадим простой сценарий имитации действий пользователя.
Для быстрого создания соответствующего блока действий, используем одну из заготовок, которые предлагает Picker. Теперь задаем настройки действий и условий для нашего случая. Первое действие CLICK NEXT BUTTON — это клик по ссылке, которая переведет нас к следующей странице каталога. Выбираем первое действие. Далее нам нужно подобрать Xpath для соответствующей ссылки.
Действие WAIT DOCUMENT STATE нужно для того, чтобы дождаться загрузки следующей страницы каталога после клика. Его настройки мы оставляем по умолчанию. Действие REPEAT ITEM PROCESSING дает указание парсеру, что после завершения действий по обработке данной страницы, в частности отработки сценария, сбора ссылок, сбора данных и экспорта, необходимо обработать страницу повторно. Обратите внимание, при повторной обработке не происходит повторной постановки страницы в очередь, мы как бы продолжаем обрабатывать тот же элемент очереди. Также не происходит повторной загрузки страницы. Именно это дает нам возможность управлять загрузкой из сценария. В нашем случае, мы для повторной обработки загружаем следующую страницу каталога, кликнув с помощью сценария, в частности действия CLICK NEXT BUTTON.
Теперь настроим условия повторения блока. Их два: next button exist и counter. Выберем первое условие. Его xpath должен быть аналогичен CLICK NEXT BUTTON, то есть указывать на ссылку для переключения на следующую страницу каталога. Это означает что блок будет повторяться только на странице, на которой имеется кнопка для перехода к следующим страницам. То есть это будет страница каталога, причем — не последняя, ведь на на последней странице каталога в большинстве случаев нет ссылки для перехода к следующим страницам. На деле, это лучше предварительно перепроверить.
Условия COUNTER введено для того, чтобы наш сценарий в рамках текущей итерации цикла обработки страницы, выполнялся максимум один раз, чтобы не пролистать за один раз больше одной страницы каталога, иначе Datacol соберет ссылки на данные не со всех страниц каталога. Напомним, цикличность обработки страницы обеспечивается использованием действия REPEAT ITEM PROCESSING.
Все почти настроено. Но давайте задумаемся, что получится, если сценарий будут выполняться перед обработкой страницы? Проблема в том, что при таком механизме ссылки с первой страницы каталога никогда не соберутся. Чтобы избежать этого, делаем данный блок блоком пост обработки.
Теперь действия данного блока будут выполняться после обработки страницы (в нашем конкретном случае — после сбора ссылок, ведь это страница каталога, и собирать данные отсюда не имеет смысла). Соответственно, мы соберем ссылки со всех страниц каталога. Сохраняем сценарий.
Настраиваем сбор ссылок. В данном случае нам нужны только ссылки на товары, ведь циклический проход по пагинации обеспечивает сценарий.
Настраиваем сбор данных. Чтобы получить весь блок описания, несколько раз применяем обрезание Xpath с конца. Сохраняем кампанию. Переходим к тестированию. Нажимаем кнопку “Запуск”.
Через некоторое время мы видим как появляется браузер-загрузчики, в котором эмулируется созданный нами сценарий.