- Как заказать парсер сайта
- Видеоинструкции по настройке
- Возможности программы-парсера
- Действия в парсере
- Раздел «Работа с HTML»
- Раздел «Текстовые»
- Раздел «Перекодировка и форматирование»
- Раздел «Проверка и сравнение»
- Раздел «Разное»
- Раздел «Функции массива»
- Раздел «Числовые»
- Раздел «Работа с переменными»
- Раздел «Листы и книги Excel»
- Раздел «Обработка файлов из папки»
- Раздел «HTTP запрос»
- Раздел «Internet Explorer»
- Раздел «Управление парсером»
- Раздел «Веб-запросы, XML, макросы VBA»
- Недокументированные действия
- Работа с браузером (Chrome и т.п.)
- Отключенные (устаревшие) действия
- Интерфейс программы
- Использование браузера
- Ошибки при парсинге
- Вывод массива значений в одну ячейку
- Обход защиты Qrator, Incapsula и CloudFare
- Ошибка: сервер не ответил за 9 секунд
- Парсер перезаписывает данные в первой строке листа
- Невозможно запустить макрос, - нет доступа к проекту VBA
- Ошибка Compile error in hidden module
- Ошибка загрузки страницы по HTTPS (SSL Error)
- Дополнительные возможности
- Зарезервированные переменные и подстановочные коды парсера
- Кеширование страниц в парсере
- Переменные в парсере
- Обновление строк в существующей таблице при парсинге
- Переключение между наборами настроек в парсере
- Запуск мониторинга цен по расписанию
- Запуск парсера по расписанию
- Программный запуск парсера из внешнего макроса
- Доп. опции парсера (файл parser.ini)
- Наборы действий
- Прочие статьи по настройке парсера
- Коды останова парсера, и перехода на другое действие
- Плагины для парсера
- Запуск нескольких парсеров по очереди
- Обработка капчи (Captcha) в парсере
- Прокси серверы
Пейджер с неизвестным заранее количеством страниц |
Рассмотрим вариант, когда количество страниц пейджера заранее узнать нет возможности
(когда, только перейдя на 7 страницу результатов, узнаём, что есть ещё 8 и 9 страницы, и т.д.)
Для начала, попробуем найти значение количества страниц в исходном коде страницы.
Оно там может быть где угодно в любом виде. На примере этой страницы рассмотрим алгоритм действий:
- Пролистываем пейджер на сайте пока есть результаты, и обнаруживаем, что в этом разделе каталога выводится только 11 страниц результатов
- Открываем исходный код исходной страницы в браузере (нажатием Ctrl + U) или в блокноте, и пробуем найти там число 11.
Причём, важно, ищем с кавычками до и после числа (а то устанете просматривать сотни найденных вхождений): ищем '11' и "11" (в одинарных и двойных кавычках) - Если нам повезло, и мы нашли (в данном случае это в коде страницы выглядит как ... navParams: {'NavPageCount':'11','NavPageNomer':'1','NavNum':'1'} ...), то теперь можно парсером извлечь это значение, и указать его в параметре действия получения ссылок пейджера как максимальное число страниц:
Исходное значение |
---|
Ссылка: (откроется в новой вкладке) |
Действие | Параметр | Значение | Результат |
---|---|---|---|
Загрузить ИСХОДНЫЙ КОД веб-страницы | URL | Исходный код веб-страницы (длиной 763149 символов) | |
Кодировка веб-страницы | |||
Загружать все страницы результатов | |||
Кеширование | |||
Создать новый список значений | Исходный код веб-страницы (длиной 763149 символов) <без изменений> |
||
Взять блоки текста МЕЖДУ ... | Начало блока текста | 'NavPageCount':' | Число (длиной 2 символа) |
Конец блока текста | ' | ||
Номер результата | 1 | ||
Добавлять начало и конец блока в результат | нет | ||
Добавить значение в список значений | Сохранить значение в переменную | PagesCount | Исходный код веб-страницы (длиной 763149 символов) |
Разделитель элементов списка | | | ||
HTML: Получить все ссылки пейджера | HTML фильтры | Массив из 11 значений:https://bradex.ru/catalog/tovary_houshold/ https://bradex.ru/catalog/tovary_houshold/?PAGEN_1=2 https://bradex.ru/catalog/tovary_houshold/?PAGEN_1=3 https://bradex.ru/catalog/tovary_houshold/?PAGEN_1=4 https://bradex.ru/catalog/tovary_houshold/?PAGEN_1=5 ... (ещё 6 значений) |
|
Префикс пейджера | |||
Дополнительные параметры | max=%PagesCount% |
Если же с поиском количества страниц в HTML коде нам не повезло, возможен другой вариант: мы формируем ссылки на страницы результатов «с запасом», а на следующем подуровне выполняем проверку, есть или нет товары на странице.
Если же действие «Получить все ссылки пейджера» неверно формирует ссылки на страницы результатов, то можно сформировать массив ссылок таким образом (на примере этого сайта):
Действие | Параметр | Значение | Результат |
---|---|---|---|
Часть строки по разделителю (split) | Разделитель | .html | Ссылка: (откроется в новой вкладке) |
Индекс нужной части | 1 | ||
Список имён переменных через | | |||
Сохранить текущее значение в переменную | Название переменной | ссылка | Ссылка: (откроется в новой вкладке) <без изменений> |
Область видимости | parser | ||
СОЗДАТЬ массив чисел (для цикла) | Начальное значение | 0 | Массив из 100 значений: |
Конечное значение | 99 | ||
Шаг | 1 | ||
Делитель для конечного значения | |||
Добавить текст ДО или ПОСЛЕ | Префикс | %ссылка%/page/ | Массив из 100 значений:https://agrovektor.com/category/73-elevatory/page/0.html <a href="https://agrovektor.com/category/73-elevatory/page/1.html" title="https://agrovektor.com/category/73-elevatory/page/1.html">https://agrovektor.com/category/73-elevatory/page/1.html</a> <a href="https://agrovektor.com/category/73-elevatory/page/2.html" title="https://agrovektor.com/category/73-elevatory/page/2.html">https://agrovektor.com/category/73-elevatory/page/2.html</a> <a href="https://agrovektor.com/category/73-elevatory/page/3.html" title="https://agrovektor.com/category/73-elevatory/page/3.html">https://agrovektor.com/category/73-elevatory/page/3.html</a> <a href="https://agrovektor.com/category/73-elevatory/page/4.html" title="https://agrovektor.com/category/73-elevatory/page/4.html">https://agrovektor.com/category/73-elevatory/page/4.html</a> ... (ещё 95 значений) |
Суффикс | .html | ||
Заменить часть текста | Что заменяем | /page/0. | Массив из 100 значений:https://agrovektor.com/category/73-elevatory.html <a href="https://agrovektor.com/category/73-elevatory/page/1.html" title="https://agrovektor.com/category/73-elevatory/page/1.html">https://agrovektor.com/category/73-elevatory/page/1.html</a> <a href="https://agrovektor.com/category/73-elevatory/page/2.html" title="https://agrovektor.com/category/73-elevatory/page/2.html">https://agrovektor.com/category/73-elevatory/page/2.html</a> <a href="https://agrovektor.com/category/73-elevatory/page/3.html" title="https://agrovektor.com/category/73-elevatory/page/3.html">https://agrovektor.com/category/73-elevatory/page/3.html</a> <a href="https://agrovektor.com/category/73-elevatory/page/4.html" title="https://agrovektor.com/category/73-elevatory/page/4.html">https://agrovektor.com/category/73-elevatory/page/4.html</a> ... (ещё 95 значений) |
На что заменяем | . | ||
Количество замен | 1 | ||
Несколько первых элементов массива | Количество элементов | 1 | Ссылка: (откроется в новой вкладке) |
Загрузить ИСХОДНЫЙ КОД веб-страницы | URL | Исходный код веб-страницы (длиной 191936 символов) | |
Кодировка веб-страницы | |||
Загружать все страницы результатов | |||
Кеширование | |||
Заменить часть текста | Что заменяем | "/category/ | Исходный код веб-страницы (длиной 194444 символа) |
На что заменяем | "https://agrovektor.com/category/ | ||
Количество замен | все | ||
HTML: Поиск тегов | Тип элемента | div | Часть HTML-кода веб-страницы (длиной 232 символа) |
Название проверяемого атрибута | class | ||
Значение проверяемого атрибута | tree_cat_1 | ||
Тип результата / извлекаемый атрибут | outerHTML 1 | ||
HTML: Удалить пробелы между тегами | Часть HTML-кода веб-страницы (длиной 212 символа) |
- Добавить комментарий
- 2239 просмотров