Действие парсера «HTML: Рекурсивный поиск страниц»

Действие предназначено для получения списка URL страниц в многоуровневом каталоге сайта.

Например, у нас есть URL страницы раздела сайта, на которой присутствуют ссылки на подкатегории, а в подкатегориях есть еще вложенные категории.
Наша задача - добраться до страниц с товарами, перебрав все вложенные категории и подкатегории.

Это действие прогрузит текущую страницу (исходное значение - URL стартовой страницы), и найдет на ней все ссылки по маске «Шаблоны для обрабатываемых ссылок», исключив ссылки, соответствующие маске «Шаблоны для исключаемых ссылок». Область поиска по умолчанию - вся страница, но можно сузить обрасть поиска, задав «HTML фильтры для области поиска» (например, div class=category-items)
Чтобы исключить из найденных страниц ненужные (где нет списка товаров, а только подкатегории), можно задать маску HTML кода подходящих страниц в параметре «Признак нужной страницы» (указав текст, встречающийся только на страницах, где есть товары, - например, catalog-items-list)

На выходе действия - массив ссылок на найденные страницы.

Действие имеет 7 параметров:

  • Шаблоны для обрабатываемых ссылок (что искать - маска подходящих ссылок на страницы)
  • Шаблоны для исключаемых ссылок (какие ссылки игнорировать)
  • HTML фильтры для области поиска (сузив область поиска на странице, ускоряем процесс)
  • Признак нужной страницы (чтобы откинуть страницы, где есть только подкатегории, а товаров нет)
  • Кодировка веб-страницы (см. описание в действии загрузки страниц)
  • Выполнять для каждой ссылки (оставьте поле пустым)
  • Лимит количества ссылок (защита от зацикливания, при неверной настройке. По-умолчанию 10000)

 

Рассмотрим работу действия на примере

Допустим, у нас есть такая ссылка на раздел сайта, где есть несколько подразделов разного уровня вложенности.
Нам нужно от неё добраться до страниц со списками товаров, для этого, надо перебрать 3 категории, в каждой из которых есть подкатегории (пример страницы), а внутри подкатегорий - где-то вложенные подкатегории, а где-то - сразу товары (пример страницы).

Действие Параметр Значение
HTML: Рекурсивный поиск страниц Шаблоны для обрабатываемых ссылок catalog/
Шаблоны для исключаемых ссылок  
HTML фильтры для области поиска div class=category-items-desktop
Признак нужной страницы catalog-items-list
Кодировка веб-страницы direct
Выполнять для каждой ссылки  
Лимит количества ссылок 10000
Исходное значение   Результат (массив из 43 ссылок)
https://www.dns-shop.ru/catalog/17aa72ab16404e77/noutbuki-i-planshety/
 
https://www.dns-shop.ru/catalog/17a892f816404e77/noutbuki/
https://www.dns-shop.ru/catalog/recipe/bb6780d48f27616b/netbuki/
https://www.dns-shop.ru/catalog/recipe/596e2eef88b54384/ultrabuki/
	... тут еще много ссылок ... 
https://www.dns-shop.ru/catalog/a313f318c3887fd7/ofis-i-deloproizvodstvo/
https://www.dns-shop.ru/catalog/c662e138c3887fd7/antivirusy/
https://www.dns-shop.ru/catalog/df3671d0c3887fd7/multimedia-i-prochee-po/

 

Таким образом, одним действием, мы перебрали десятки страниц разной степени вложенности, и нашли там 43 страницы с товарами, которые будем парсить на следующем подуровне.

В параметрах мы указали:

Шаблоны для обрабатываемых ссылок catalog/

Ищем ссылки, содержащие в URL слово catalog/

HTML фильтры для области поиска div class=category-items-desktop

Ищем не на всей странице (где сотни ссылок на всякие разные разделы каталога), а только внутри тега div класса category-items-desktop (именно внутри него выводятся ссылки на подразделы)

Признак нужной страницы catalog-items-list

Текст catalog-items-list встречается в HTML коде страницы со списком товаров, но не встречается в HTML коде страниц с подразделами. Так мы оставляем в результате только те страницы, которые мы будем потом перебирать в поисках товаров.

Кодировка веб-страницы direct

Конкретно с этим сайтом, прямая загрузка страниц (direct) или загрузка сжатых страниц (gzip) работает заметно быстрее обычной.
В большинстве случаев, оставляем параметр «Кодировка страницы» пустым


 

В процессе тестирования этого действия (а тестирование может занять много времени, если глубина каталога большая, и парсеру требуется прогрузить десятки или сотни страниц) в окно результатов действия выводится информация о процессе обработки страниц, выглядящая примерно так:

Обработано 1 / 0, страница http.../noutbuki-i-planshety/
Обработано 2 / 0, страница http.../noutbuki-i-akssesuary/
Обработано 3 / 0, страница http.../noutbuki/
Обработано 4 / 1, страница http.../netbuki/
Обработано 5 / 2, страница http.../ultrabuki/
Обработано 6 / 3, страница http.../noutbuki-transformery/
Обработано 7 / 4, страница http.../igrovye-noutbuki-/
Обработано 8 / 5, страница http.../komplektuyushhie-dlya-noutbukov/
Обработано 9 / 5, страница http.../ssd-nakopiteli/

Здесь мы видим, какие страницы и в каком порядке загружаются.
Запись Обработано 5 / 2 означает, что в текущий момент парсер прогрузил всего 5 страниц, а целевых страницы (со списком товаров) найдено всего 2 (следовательно, можно сделать вывод, что на остальных трёх страницах товаров не было, - только ссылки на подкатегории)