Итераторы

CSV итератор

Итераторы типа csv используются в случаях, когда вам нужно проитерировать по целому набору значений для определенного поля или аргумента. Диггер самостоятельно разберёт переданные значения и создаст список наборов аргументов. Для иниализации итератора используются следующие параметры:

Параметр Описание
type Константа, определяющая тип итератора, имеет значение csv.
name Имя аргумента.
value Значения аргумента в csv формате (набор значений, разделенных запятой).

Ниже приведен пример инициализации подобного итератора:

              iterator:
- type: csv
  # ИМЯ АРГУМЕНТА
  name: age
  # НАБОР ЗНАЧЕНИЙ
  value: 1,2,3,4
              

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

              [
    { "age": 1 },
    { "age": 2 },
    { "age": 3 },
    { "age": 4 }
]
              

Пример использования итератора в диггере:

              ---
config:
    debug: 2
    agent: Firefox
iterator:
    type: csv
    name: age
    value: 18,19,25
do:
- walk:
    to: https://www.diggernaut.com/sandbox/meta-lang-object-ru.html?vozrast=<%age%>
    do:
              
Время Уровень Сообщение
2017-10-23 15:09:19:464 info Scrape is done
2017-10-23 15:09:19:449 debug Page content: <!DOCTYPE html><html lang="ru"><head> <meta charset="UTF-8"/> <title>Diggernaut | Мета-язык | Пример объекта</title> </head> <body> <h1>Заголовок-1</h1> <p>Пример описания чего-то там.</p> </body></html>
2017-10-23 15:09:19:422 debug Referers: Referer: https://www.diggernaut.com/sandbox/meta-lang-object-ru.html?vozrast=19
2017-10-23 15:09:19:413 debug Referer: https://www.diggernaut.com/sandbox/meta-lang-object-ru.html?vozrast=19
2017-10-23 15:09:19:405 info Retrieving page (GET): https://www.diggernaut.com/sandbox/meta-lang-object-ru.html?vozrast=25
2017-10-23 15:09:19:390 debug Page content: <!DOCTYPE html><html lang="ru"><head> <meta charset="UTF-8"/> <title>Diggernaut | Мета-язык | Пример объекта</title> </head> <body> <h1>Заголовок-1</h1> <p>Пример описания чего-то там.</p> </body></html>
2017-10-23 15:09:19:364 debug Referers: Referer: https://www.diggernaut.com/sandbox/meta-lang-object-ru.html?vozrast=18
2017-10-23 15:09:19:353 debug Referer: https://www.diggernaut.com/sandbox/meta-lang-object-ru.html?vozrast=18
2017-10-23 15:09:19:345 info Retrieving page (GET): https://www.diggernaut.com/sandbox/meta-lang-object-ru.html?vozrast=19
2017-10-23 15:09:19:332 debug Page content: <!DOCTYPE html><html lang="ru"><head> <meta charset="UTF-8"/> <title>Diggernaut | Мета-язык | Пример объекта</title> </head> <body> <h1>Заголовок-1</h1> <p>Пример описания чего-то там.</p> </body></html>
2017-10-23 15:09:18:944 info Retrieving page (GET): https://www.diggernaut.com/sandbox/meta-lang-object-ru.html?vozrast=18
2017-10-23 15:09:18:935 info Starting scrape
2017-10-23 15:09:18:914 debug Setting up default proxy
2017-10-23 15:09:18:900 debug Setting up surf
2017-10-23 15:09:18:867 info Starting digger: meta-lang-iterator-csv [1860]

Вы можете использовать комбинацию итераторов для создания списка со всеми возможными комбинациями аргументов из разных итераторов.

Пример использования комбинации итераторов в диггере:

              ---
config:
    debug: 2
    agent: Firefox
iterator:
# по датам
- type: date
  start: '2017-10-01'
  period: 2
  interval: 1
  template: '%Y-%m-%d'
# и возрасту
- type: csv
  name: age
  value: 30,40
do:
- walk:
    to: https://www.diggernaut.com/sandbox/meta-lang-object-ru.html?vozrast=<%age%>&from=<%start_date%>
    do:
              
Время Уровень Сообщение
2017-10-23 15:36:56:946 info Scrape is done
2017-10-23 15:36:56:932 debug Page content: <!DOCTYPE html><html lang="ru"><head> <meta charset="UTF-8"/> <title>Diggernaut | Мета-язык | Пример объекта</title> </head> <body> <h1>Заголовок-1</h1> <p>Пример описания чего-то там.</p> </body></html>
2017-10-23 15:36:56:903 debug Referers: Referer: https://www.diggernaut.com/sandbox/meta-lang-object-ru.html?vozrast=30&from=2017-10-02
2017-10-23 15:36:56:894 debug Referer: https://www.diggernaut.com/sandbox/meta-lang-object-ru.html?vozrast=30&from=2017-10-02
2017-10-23 15:36:56:885 info Retrieving page (GET): https://www.diggernaut.com/sandbox/meta-lang-object-ru.html?vozrast=40&from=2017-10-02
2017-10-23 15:36:56:871 debug Page content: <!DOCTYPE html><html lang="ru"><head> <meta charset="UTF-8"/> <title>Diggernaut | Мета-язык | Пример объекта</title> </head> <body> <h1>Заголовок-1</h1> <p>Пример описания чего-то там.</p> </body></html>
2017-10-23 15:36:56:844 debug Referers: Referer: https://www.diggernaut.com/sandbox/meta-lang-object-ru.html?vozrast=40&from=2017-10-01
2017-10-23 15:36:56:836 debug Referer: https://www.diggernaut.com/sandbox/meta-lang-object-ru.html?vozrast=40&from=2017-10-01
2017-10-23 15:36:56:829 info Retrieving page (GET): https://www.diggernaut.com/sandbox/meta-lang-object-ru.html?vozrast=30&from=2017-10-02
2017-10-23 15:36:56:817 debug Page content: <!DOCTYPE html><html lang="ru"><head> <meta charset="UTF-8"/> <title>Diggernaut | Мета-язык | Пример объекта</title> </head> <body> <h1>Заголовок-1</h1> <p>Пример описания чего-то там.</p> </body></html>
2017-10-23 15:36:56:792 debug Referers: Referer: https://www.diggernaut.com/sandbox/meta-lang-object-ru.html?vozrast=30&from=2017-10-01
2017-10-23 15:36:56:784 debug Referer: https://www.diggernaut.com/sandbox/meta-lang-object-ru.html?vozrast=30&from=2017-10-01
2017-10-23 15:36:56:778 info Retrieving page (GET): https://www.diggernaut.com/sandbox/meta-lang-object-ru.html?vozrast=40&from=2017-10-01
2017-10-23 15:36:56:766 debug Page content: <!DOCTYPE html><html lang="ru"><head> <meta charset="UTF-8"/> <title>Diggernaut | Мета-язык | Пример объекта</title> </head> <body> <h1>Заголовок-1</h1> <p>Пример описания чего-то там.</p> </body></html>
2017-10-23 15:36:56:311 info Retrieving page (GET): https://www.diggernaut.com/sandbox/meta-lang-object-ru.html?vozrast=30&from=2017-10-01
2017-10-23 15:36:56:302 info Starting scrape
2017-10-23 15:36:56:286 debug Setting up default proxy
2017-10-23 15:36:56:277 debug Setting up surf
2017-10-23 15:36:56:247 info Starting digger: meta-lang-iterator-combo [1861]

Далее мы рассмотрим итераторы типа fieldset.