Методы для работы с регистром
Parse
С помощью команды parse вы можете извлекать данные из текущего блока и записывать их в регистр. В дальнейшем эти данные могут быть изменены, нормализованы, записаны в переменные или в поля объектов.
Обратите внимание!
Parse всегда возвращает какое-то значение в регистр, или пустую строку, если в блоке нет контента для извлечения. Команда может возвращать текстовый или HTML контент блока, а также значение аттрибута текущего HTML элемента (корневого элемента блока).
Примеры записи в коде:
- find:
path: a.somepath
do:
# ПАРСИМ ТЕКСТОВЫЙ КОНТЕНТ ВЫБРАННОГО БЛОКА
- parse
# ПАРСИМ АТТРИБУТ `href` НАЙДЕННОГО ЭЛЕМЕНТА `a`
- parse:
attr: href
# ПАРСИМ HTML КОНТЕНТ ВЫБРАННОГО БЛОКА
- parse:
format: html
# ИСПОЛЬЗУЕМ ФИЛЬТРЫ (РЕГУЛЯРНЫЕ ВЫРАЖЕНИЯ) ДЛЯ ИЗВЛЕЧЕНИЯ НУЖНОГО ФРАГМЕНТА ДАННЫХ
- find:
path: .somepath
do:
- parse:
filter:
- .+=(\d+)
- (.+)
- find:
path: .somepath
do:
- parse:
attr: class
filter:
- .+=(\d+)
- (.+)
Команда parse поддерживает следующие параметры:
Параметр | Описание |
---|---|
format | Формат извлеченных данных, text или html. Если параметр не передан, будет извлечен текст. |
attr | Если передан, будет извлечено значение аттрибута корневого тега текущего блока, имя которого передано в параметре. Если не передан - будет извлечен весь контент блока. |
filter | Одно или несколько регулярных выражений для извлечения только определенных данных из контента. Извлекаемые данные должны быть заключены в круглые скобки внутри регулярного выражения (определены как группа). Если указано несколько регулярных выражений, то они используются по порядку пока не будет извлечена не пустая строка используя текущий фильтр. |
joinby | Значение этого параметра используется для соединения найденных фильтром групп. Если параметр отсутствует и фильтр найдет несколько групп, то они будут соединены пустой строкой. |
Теперь давайте рассмотрим более детальные примеры использования команды parse. В качестве данных возмем фрагмент html документа:
<ul class="list" >
<li class="list-item" id="1">Some text</li>
<li class="list-item" id="item=2"><a href="http://somesite.com/">Link</a></li>
<li class="list-item" id="item=3">Some other text</li>
</ul>
Варианты использования команды:
# НАЙДЕМ `ul` И ЗАПОЛНИМ РЕГИСТР ЕГО СОДЕРЖИМЫМ
- find:
path: .list
do:
- parse
# В РЕГИСТРЕ НАХОДИТСЯ "Some textLinkSome other text"
Далее мы рассмотрим еще одну команду, которой можно устанавливать значение регистра: register_set.