- Как заказать парсер сайта
- Видеоинструкции по настройке
- Возможности программы-парсера
- Действия в парсере
- Раздел «Работа с HTML»
- Раздел «Текстовые»
- Раздел «Перекодировка и форматирование»
- Раздел «Проверка и сравнение»
- Раздел «Разное»
- Раздел «Функции массива»
- Раздел «Числовые»
- Раздел «Работа с переменными»
- Раздел «Листы и книги Excel»
- Раздел «Обработка файлов из папки»
- Раздел «HTTP запрос»
- Раздел «Internet Explorer»
- Раздел «Управление парсером»
- Раздел «Веб-запросы, XML, макросы VBA»
- Недокументированные действия
- Работа с браузером (Chrome и т.п.)
- Отключенные (устаревшие) действия
- Интерфейс программы
- Использование браузера
- Ошибки при парсинге
- Вывод массива значений в одну ячейку
- Обход защиты Qrator, Incapsula и CloudFare
- Ошибка: сервер не ответил за 9 секунд
- Парсер перезаписывает данные в первой строке листа
- Невозможно запустить макрос, - нет доступа к проекту VBA
- Ошибка Compile error in hidden module
- Ошибка загрузки страницы по HTTPS (SSL Error)
- Дополнительные возможности
- Зарезервированные переменные и подстановочные коды парсера
- Кеширование страниц в парсере
- Переменные в парсере
- Обновление строк в существующей таблице при парсинге
- Переключение между наборами настроек в парсере
- Запуск мониторинга цен по расписанию
- Запуск парсера по расписанию
- Программный запуск парсера из внешнего макроса
- Доп. опции парсера (файл parser.ini)
- Наборы действий
- Прочие статьи по настройке парсера
- Коды останова парсера, и перехода на другое действие
- Плагины для парсера
- Запуск нескольких парсеров по очереди
- Обработка капчи (Captcha) в парсере
- Прокси серверы
Извлечение нескольких значений подряд |
Для случаев, когда из одного HTML кода нужно подряд извлечь несколько значений, сохраняя полученные результаты в один список или в отдельные переменные, в парсере предусмотрен набор из 3 следующих действий:
В большинстве случаев используются только первые 2 действия, а третье (Получить список значений) требуется только в том случае, когда нужно получить все извлеченные значения в одной строке.
Как бы выглядели настройки парсера без этих действий?
Было бы немного больше действий:
- сохранить значение в переменную TXT (запомнили исходное значение, к которому будет возвращаться)
- получить какой-то результат
- сохранить результат в переменную 1
- считать значение переменной TXT (возврат к исходному значению)
- получить какой-то результат
- сохранить результат в переменную 2
- считать значение переменной TXT (возврат к исходному значению)
- получить какой-то результат
- сохранить результат в переменную 3
- и т.д.
Как выглядит алгоритм с использованием действий для списка значений?
Чуть короче:
- СОЗДАТЬ НОВЫЙ СПИСОК ЗНАЧЕНИЙ (запомнили исходное значение)
- получить какой-то результат
- ДОБАВИТЬ результат в переменную 1 (и заодно вернулись к исходному значению)
- получить какой-то результат
- ДОБАВИТЬ результат в переменную 2 (и заодно вернулись к исходному значению)
- получить какой-то результат
- ДОБАВИТЬ результат в переменную 3 (и заодно вернулись к исходному значению)
- и т.д.
Когда надо извлечь 10-15 значений из одного исходного значения, — мы таким образом мы заметно укорачиваем список команд. К тому же, появляется возможность одним действием получить весь список извлечённых значений.
Примеры использования:
Пример 1: преобразование даты в американском формате написания в привычный нам формат:
Исходное значение |
---|
Дата (в американском формате месяц / день / год) |
Действие | Параметр | Значение | Результат |
---|---|---|---|
Создать новый список значений | <без изменений> | ||
Часть строки по разделителю | Разделитель | / | Число |
Индекс нужной части | 2 | ||
Список имён переменных через | | |||
Добавить значение в список значений | Сохранить значение в переменную | Текст |
|
Разделитель элементов списка | | | ||
Часть строки по разделителю | Разделитель | / | Число |
Индекс нужной части | 1 | ||
Список имён переменных через | | |||
Добавить значение в список значений | Сохранить значение в переменную | Текст |
|
Разделитель элементов списка | | | ||
Часть строки по разделителю | Разделитель | / | Число |
Индекс нужной части | 3 | ||
Список имён переменных через | | |||
Добавить текст ДО или ПОСЛЕ | Префикс | 20 | Число |
Суффикс | |||
Добавить значение в список значений | Сохранить значение в переменную | Текст |
|
Разделитель элементов списка | | | ||
Получить список значений | Текст |
||
Заменить часть текста | Что заменяем | | | Дата (в привычном нам формате день.месяц.год) |
На что заменяем | . | ||
Количество замен | все |
Пример 2: извлекаем из HTML несколько значений подряд, не меняя исходного значения:
Действие | Параметр | Значение | |
---|---|---|---|
запоминаем исходное значение (к которому парсер будет возвращаться после каждого действия «Добавить значение в список значений»)
|
|||
Создать новый список значений | |||
HTML: Поиск тегов | Тип элемента | brand | |
Название проверяемого атрибута | |||
Значение проверяемого атрибута | |||
Тип результата / извлекаемый атрибут | ConvertToText 1 | ||
Сохранить результат в переменную | |||
Использовать новое значение | да | ||
программа автоматически возвращается к исходному значению, запомненному при выполнении действия «Создать новый список значений»
|
|||
Добавить значение в список значений | Сохранить значение в переменную | бренд | |
Разделитель элементов списка | | | ||
HTML: Поиск тегов | Тип элемента | salePrice | |
Название проверяемого атрибута | |||
Значение проверяемого атрибута | |||
Тип результата / извлекаемый атрибут | ConvertToText 1 | ||
Сохранить результат в переменную | |||
Использовать новое значение | да | ||
программа автоматически возвращается к исходному значению, запомненному при выполнении действия «Создать новый список значений»
|
|||
Добавить значение в список значений | Сохранить значение в переменную | цена | |
Разделитель элементов списка | | | ||
Выборка из XML | Запрос XPath | //sizes/size | |
Что выводить | text | ||
Название атрибута / маска текста | |||
Значение по умолчанию | |||
Сохранить результат в переменную | |||
Использовать новое значение | да | ||
ОБЪЕДИНИТЬ (сцепить) элементы массива | Разделитель элементов массива | ; | |
программа автоматически возвращается к исходному значению, запомненному при выполнении действия «Создать новый список значений»
|
|||
Добавить значение в список значений | Сохранить значение в переменную | размеры | |
Разделитель элементов списка | | |
Исходное значение | Результат | |
---|---|---|
<products index="1"> <id>2871804</id> <name>Платье летнее</name> <brand>O'STIN</brand> <price>1281</price> <sale>20</sale> <salePrice>1024</salePrice> <sizes> <size index="1">36</size> <size index="2">38</size> <size index="3">40</size> </sizes> <picsCount>4</picsCount> <rating>5</rating> <feedbackCount>11</feedbackCount> </products> |
<products index="1"> <id>2871804</id> <name>Платье летнее</name> <brand>O'STIN</brand> <price>1281</price> <sale>20</sale> <salePrice>1024</salePrice> <sizes> <size index="1">36</size> <size index="2">38</size> <size index="3">40</size> </sizes> <picsCount>4</picsCount> <rating>5</rating> <feedbackCount>11</feedbackCount> </products> |
Как видим, исходное значение не изменилось (можно продолжать извлекать из него данные), а в переменные успешно записались извлечённые значения:
Впрочем, в новой версии действия «HTML: Поиск тегов» можно извлечь все значения в переменные без дополнительных действий:
Действие | Параметр | Значение |
---|---|---|
HTML: Поиск тегов | Тип элемента | brand |
Название проверяемого атрибута | ||
Значение проверяемого атрибута | ||
Тип результата / извлекаемый атрибут | ConvertToText 1 | |
Сохранить результат в переменную | бренд | |
Использовать новое значение | нет | |
HTML: Поиск тегов | Тип элемента | salePrice |
Название проверяемого атрибута | ||
Значение проверяемого атрибута | ||
Тип результата / извлекаемый атрибут | ConvertToText 1 | |
Сохранить результат в переменную | цена | |
Использовать новое значение | нет | |
Выборка из XML | Запрос XPath | //sizes/size |
Что выводить | text | |
Название атрибута / маска текста | ||
Значение по умолчанию | ||
Сохранить результат в переменную | размеры | |
Использовать новое значение | нет |
- Добавить комментарий
- 1162 просмотра