Объекты среды выполнения
Объекты
Объекты - это контейнеры для хранения собранных данных.
Diggernaut поддерживает не только плоские структуры данных,
но и вложенные, поэтому объекты могут быть вложены в другие объекты.
Основные моменты, которые вы должны знать об объектах:
- Объекты служат для сохранения собранных данных
- Объекты существуют во всех контекстах и контекстно-независимы
- Перед записью полей в объект, его нужно создать
- Запись в поля объектов возможна из любого блока внутри блока в котором создан объект
- Для корректной работы объекты должны быть сохранены в том же блоке, где они были открыты
- Объект может быть сохранен в поле другого объекта или в базу данных
Пример использования простого объекта:
---
config:
debug: 2
agent: Firefox
do:
- walk:
to: https://www.diggernaut.com/sandbox/meta-lang-object-ru.html
do:
# создаем новый объект с именем `item`
- object_new: item
- find:
path: h1
do:
- parse
# записываем значение регистра в поле `title` объекта `item`
- object_field_set:
object: item
field: title
- find:
path: p
do:
- parse
# записываем значение регистра в поле `description` объекта `item`
- object_field_set:
object: item
field: description
# сохраняем объект
- object_save:
name: item
Время | Уровень | Сообщение |
---|---|---|
2017-10-21 03:20:43:412 | info | Scrape is done |
2017-10-21 03:20:42:687 | debug | Saving object with name: item |
2017-10-21 03:20:42:679 | debug | Saved field description for object item: Пример описания чего-то там. |
2017-10-21 03:20:42:671 | debug | Parsed content: Пример описания чего-то там. |
2017-10-21 03:20:42:663 | debug | Parsing block with arguments: map[] |
2017-10-21 03:20:42:654 | debug | Block content: Пример описания чего-то там. |
2017-10-21 03:20:42:647 | debug | Number of found blocks: 1 |
2017-10-21 03:20:42:639 | debug | Looking for: p |
2017-10-21 03:20:42:631 | debug | Saved field title for object item: Заголовок-1 |
2017-10-21 03:20:42:621 | debug | Parsed content: Заголовок-1 |
2017-10-21 03:20:42:614 | debug | Parsing block with arguments: map[] |
2017-10-21 03:20:42:606 | debug | Block content: Заголовок-1 |
2017-10-21 03:20:42:598 | debug | Number of found blocks: 1 |
2017-10-21 03:20:42:590 | debug | Looking for: h1 |
2017-10-21 03:20:42:582 | debug | Creating object with name: item |
2017-10-21 03:20:42:568 | debug | Page content: <html lang="ru"> <head> <meta charset="UTF-8"/> <title>Diggernaut | Мета-язык | Пример объекта</title> </head> <body> <h1>Заголовок-1</h1> <p>Пример описания чего-то там.</p> </body> </html> |
2017-10-21 03:20:42:269 | info | Retrieving page (GET): https://www.diggernaut.com/sandbox/meta-lang-object-ru.html |
2017-10-21 03:20:42:263 | info | Starting scrape |
2017-10-21 03:20:42:250 | debug | Setting up default proxy |
2017-10-21 03:20:42:235 | debug | Setting up surf |
2017-10-21 03:20:42:208 | info | Starting digger: meta-lang-object [1853] |
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<title>Diggernaut | Мета-язык | Пример объекта</title>
</head>
<body>
<h1>Заголовок-1</h1>
<p>Пример описания чего-то там.</p>
</body>
</html>
{
item : {
title : "Заголовок-1",
description : "Пример описания чего-то там."
}
}