Объекты среды выполнения
Пул ссылок
Пул ссылок - это список, содержащий в себе URL адреса.
Он может использоваться как, например, для формирования списка со страницами каталога и дальнейшей
итерации по этому списку. Или, используя тот факт, что все URL в листе могут быть только уникальными,
очень удобно собирать URL на страницы товаров в единый пул со всех страниц каталога, а затем итерируя по пулу,
собрать все товары. Это позволит избежать дубликатов товаров, потому что в большинстве магазинов один и тот же
товар может находиться в разных категориях. Это экономит ваши ресурсы, делает ваш набор данных более чистым
и уменьшает нагрузку на сайт донор.
Пять важнейших моментов о пулах ссылок:
- Команда для добавления URL в пул может принимать значение регистра, строковое знаение, или составное с аргументами или переменными
- Пулы существуют во всех контекстах, контекстно-независимы и могут быть использованы в любом контексте
- Может существовать бесконечное множество пулов
- URL`ы добавляемые в пул будут автоматически нормализованы
- Все значения (URL`ы) в пуле уникальны, поэтому в списке не может находиться два одинаковых адреса
Пример формирования пула ссылок:
---
config:
debug: 2
agent: Firefox
do:
- walk:
to: https://www.diggernaut.com/sandbox/meta-lang-pool-ru.html
do:
- find:
path: body > a
do:
- parse:
attr: href
- normalize:
routine: url
- link_add:
pool: main
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<title>Diggernaut | Мета-язык | Пример использования пула ссылок</title>
</head>
<body>
<a href="https://www.diggernaut.com/sandbox/table-nested-data-ru.html">Ссылка N1</a>
<br/>
<a href="https://www.diggernaut.com/sandbox/meta-lang-object-ru.html">Ссылка N2</a>
<br/>
<a href="https://www.diggernaut.com/sandbox/meta-lang-register-ru.html">Ссылка N3</a>
</body>
</html>
Время | Уровень | Сообщение |
---|---|---|
2017-10-22 00:02:56:111 | info | Scrape is done |
2017-10-22 00:02:56:104 | debug | Link added |
2017-10-22 00:02:56:097 | debug | Adding link to the pool main: https://www.diggernaut.com/sandbox/meta-lang-register-ru.html |
2017-10-22 00:02:56:089 | debug | Results: https://www.diggernaut.com/sandbox/meta-lang-register-ru.html |
2017-10-22 00:02:56:082 | debug | Applying normalization: url |
2017-10-22 00:02:56:074 | debug | Parsed content: https://www.diggernaut.com/sandbox/meta-lang-register-ru.html |
2017-10-22 00:02:56:067 | debug | Parsing attribute: href |
2017-10-22 00:02:56:060 | debug | Parsing block with arguments: map[attr:href] |
2017-10-22 00:02:56:053 | debug | Block content: Ссылка N3 |
2017-10-22 00:02:56:045 | debug | Link added |
2017-10-22 00:02:56:038 | debug | Adding link to the pool main: https://www.diggernaut.com/sandbox/meta-lang-object-ru.html |
2017-10-22 00:02:56:028 | debug | Results: https://www.diggernaut.com/sandbox/meta-lang-object-ru.html |
2017-10-22 00:02:56:018 | debug | Applying normalization: url |
2017-10-22 00:02:56:010 | debug | Parsed content: https://www.diggernaut.com/sandbox/meta-lang-object-ru.html |
2017-10-22 00:02:56:002 | debug | Parsing attribute: href |
2017-10-22 00:02:55:994 | debug | Parsing block with arguments: map[attr:href] |
2017-10-22 00:02:55:987 | debug | Block content: Ссылка N2 |
2017-10-22 00:02:55:979 | debug | Link added |
2017-10-22 00:02:55:972 | debug | Adding link to the pool main: https://www.diggernaut.com/sandbox/table-nested-data-ru.html |
2017-10-22 00:02:55:965 | debug | Results: https://www.diggernaut.com/sandbox/table-nested-data-ru.html |
2017-10-22 00:02:55:957 | debug | Applying normalization: url |
2017-10-22 00:02:55:949 | debug | Parsed content: https://www.diggernaut.com/sandbox/table-nested-data-ru.html |
2017-10-22 00:02:55:941 | debug | Parsing attribute: href |
2017-10-22 00:02:55:933 | debug | Parsing block with arguments: map[attr:href] |
2017-10-22 00:02:55:925 | debug | Block content: Ссылка N1 |
2017-10-22 00:02:55:917 | debug | Number of found blocks: 3 |
2017-10-22 00:02:55:910 | debug | Looking for: body > a |
2017-10-22 00:02:55:898 | debug | Page content: <html lang="ru"> <head> <meta charset="UTF-8"/> <title>Diggernaut | Мета-язык | Пример использования пула ссылок</title> </head> <body> <a href="https://www.diggernaut.com/sandbox/table-nested-data-ru.html">Ссылка N1</a> <br/> <a href="https://www.diggernaut.com/sandbox/meta-lang-object-ru.html">Ссылка N2</a> <br/> <a href="https://www.diggernaut.com/sandbox/meta-lang-register-ru.html">Ссылка N3</a> </body> </html> |
2017-10-22 00:02:55:642 | info | Retrieving page (GET): https://www.diggernaut.com/sandbox/meta-lang-pool-ru.html |
2017-10-22 00:02:55:635 | info | Starting scrape |
2017-10-22 00:02:55:621 | debug | Setting up default proxy |
2017-10-22 00:02:55:608 | debug | Setting up surf |
2017-10-22 00:02:55:581 | info | Starting digger: meta-lang-pool [1855] |