Действие парсера «HTML: Получить все ссылки пейджера»

Действие "HTML: Получить все ссылки пейджера" (далее Действие) предназначено для получения всего массива ссылок из "пейджера" - навигационного блока для перехода между страницами результатов вида < предыдущая 1 2 3 ... 155 следующая > .

Действие имеет три параметра.

  1. HTML фильтры
  2. Префикс пейджера
  3. Дополнительные параметры
Действие Параметр Значение
HTML: Получить все ссылки пейджера HTML фильтры auto
Префикс пейджера  
Дополнительные параметры  
Исходное значение   Результат (массив)
http://excelvba.ru/programmes/Parser
 
http://excelvba.ru/programmes/Parser
http://excelvba.ru/programmes/Parser?page=1
http://excelvba.ru/programmes/Parser?page=2
http://excelvba.ru/programmes/Parser?page=3
.
.
.
http://excelvba.ru/programmes/Parser?page=24
http://excelvba.ru/programmes/Parser?page=25
http://excelvba.ru/programmes/Parser?page=26

Особенностью Действия является то, что на входе оно может принимать как гиперссылку (в примере выше), так и полный текст страницы (либо кусок html-кода). Т.е. мы получим тот же результат, если предварительно добавим действие Загрузить ИСХОДНЫЙ КОД веб-страницы.

Если действию не удается найти ссылки, то возвращается значение зарезервированной переменной %LastUsedURL% (т.е. в случае, если на входе была ссылка на страницу, где не удалось найти страницы пейджера, то эта же ссылка и возвращается).

Если Действие правильно находит все ссылки, то указывать параметры нет необходимости. Если ссылки не находятся или формируются неправильно, то в этом случае можно попробовать подобрать нужные параметры.

Параметр HTML фильтры

По умолчанию стоит значение "auto". В данном параметре можно указать парсеру, внутри какого тега надо искать ссылки. Зачастую это помогает получить нужный результат. Синтаксис допускает следующие способы указания нужного тега:

  • с указанием тега, атрибута и его значения, например: ul class=pager
  • с указанием только атрибута и его значения, например: id=pager

В случае, если вы задали HTML-фильтр правильно, во всплывающем информационном блоке появится сообщение с фразой:

Применён HTML фильтр ul class=pager
(длина HTML после фильтрации: 1256)

Если фильтр задан неправильно, то появится сообщение:

Применён HTML фильтр id=pager
(длина HTML после фильтрации: 0)
Ошибка поиска пейджера - после фильтрации получено пустое значение.

В случае, если не удается подобрать нужный HTML-фильтр, вы можете предварительно вырезать нужный тег действием HTML: Поиск тегов или текстовыми функциями.

Параметр Префикс пейджера

Данный параметр указывает парсеру, как выглядит ссылка пейджера. По умолчанию стоит пустое значение, это значит, что парсер пытается подобрать префикс из наиболее распространенных вариантов. Автоматически распознаются следующие варианты:

&page=#
&offset=#
&start=#
&PAGEN_1=#, &PAGEN_2=#, &PAGEN_3=#, &PAGEN_4=#, &PAGEN_5=#, &PAGEN_6=#, &PAGEN_7=#
/page/#
/p#/
/p/#/

Если префикс пейджера на обрабатываемой вами странице отличается от вышеприведенных, то запишите его в параметр по аналогии со стандартными вариантами.

Если пейджер выглядит, как одна из стандартных ссылок, но Действие всё равно его не находит или формирует неправильные ссылки, попробуйте указать принудительно нужный вариант.

Параметр Дополнительные параметры

Данный параметр нужен для правильного формирования уже найденного массива ссылок.

Если после попыток подбора первых двух параметров Действия массив ссылок всё равно не формируется, редактирование третьего параметра не поможет.

Возможно указание одного или нескольких параметров. Если нужно указать несколько параметров, то они объединяются амперсандом (&).

min=2 - указывает, с какого числа нужно формировать массив ссылок. Применяется если, например, основная ссылка и page=1 - это одна и та же страница. Или если ссылки находятся, начиная со страницы с №1, а нужна еще страница с №0.

max=100 - указывает до какого числа нужно строить массив ссылок. Обратите внимание, массив будет построен до указанного числа, даже если таких страниц на самом деле нет. Это бывает полезным, если не удается определить последнюю страницу. В таком случае создается массив с запасом, а в настройку парсера закладывается остановка, когда он доходит до пустой страницы.

 

Действие Параметр Значение
HTML: Получить все ссылки пейджера HTML фильтры auto
Префикс пейджера  
Дополнительные параметры min=5&max=50
Исходное значение   Результат (массив)
http://excelvba.ru/programmes/Parser
 
http://excelvba.ru/programmes/Parser
http://excelvba.ru/programmes/Parser?page=5
http://excelvba.ru/programmes/Parser?page=6
http://excelvba.ru/programmes/Parser?page=7
.
.
.
http://excelvba.ru/programmes/Parser?page=48
http://excelvba.ru/programmes/Parser?page=49
http://excelvba.ru/programmes/Parser?page=50

Массив начинается со страницы с №5 и заканчивается на странице №50, хотя такой страницы на момент написания статьи не существует. Также здесь хорошо видно, что массив ссылок по умолчанию начинается с основной ссылки на страницу (%LastUsedURL%).

DeleteBaseURL=1 - удаляет ссылку на основную страницу

step=1 - указывает шаг в массиве ссылок, в случае если шаг определяется Действием неправильно.

shift=+1 - указывает сколько надо добавить (или отнять) от каждого номера страницы в массиве

Действие Параметр Значение
HTML: Получить все ссылки пейджера HTML фильтры auto
Префикс пейджера  
Дополнительные параметры min=10&step=25&max=200&DeleteBaseURL=1&shift=-1
Исходное значение   Результат (массив)
http://excelvba.ru/programmes/Parser
 
http://excelvba.ru/programmes/Parser?page=9
http://excelvba.ru/programmes/Parser?page=34
http://excelvba.ru/programmes/Parser?page=59
http://excelvba.ru/programmes/Parser?page=84
http://excelvba.ru/programmes/Parser?page=109
http://excelvba.ru/programmes/Parser?page=134
http://excelvba.ru/programmes/Parser?page=159
http://excelvba.ru/programmes/Parser?page=184

Данный пример помогает понять, как работает третий параметр Действия. Сначала мы создали массив ссылок от 10-ой до 200-ой страницы с шагом в 25 страниц, затем удалили базовую ссылку (http://excelvba.ru/programmes/Parser) и после этого отняли от каждого номера страницы единицу.

Примечания и рекомендации по использованию

  • Не всегда удается с помощью данного Действия сформировать массив ссылок. Можно попробовать использовать третий параметр действия Загрузить ИСХОДНЫЙ КОД веб-страницы - Загружать все страницы результатов. Если и он не помог, то можно применить следующий алгоритм:
  1. Найти номер последней страницы (или задать его с запасом)
  2. Сформировать массив чисел
  3. Добавить текст ДО, например такой: http://excelvba.ru/programmes/Parser?page=

В результате вы получите необходимый массив ссылок.

  • Если массив формируется, но в ссылке не хватает куска текста. Например, ссылка выглядит так:

na-sklade?pages=1&p=1
na-sklade?pages=1&p=2

а формируется массив

na-sklade?p=1
na-sklade?p=2

То в этом случае можно применить действие Заменить часть текста "?p=" на "?pages=1&p="

  • Если же пейджер еще более сложный и представляет из себя что-то наподобие: /item21-item11/, /item31-item21/, то в этом случае нужно использовать наборы действий.