Основы

Как вы уже знаете, конфигурации диггеров используют YAML как язык разметки, мы выбрали его за то, что в нем используются отступы для разделения областей видимости и логических блоков, он интуитивно более понятен чем, к примеру, JSON или XML. И наконец, на YAML быстрее писать код, чем в вышеуказанных форматах. Однако, если вы еще недостаточно хорошо знакомы с YAML, вы можете ошибиться в разметке и ваш диггер вернет ошибку. Поэтому на начальных порах вы можете проверять корректность вашего кода используя линтер.

Мы уже упоминали, что вам не нужно знать других языков программирования, потому что в Diggernaut мы используем наш собственный мета-язык, который настолько прост, что освоить его вы сможете всего лишь за один вечер. Наградой вам будет то, что с ним вы сможете парсить сайты любой сложности и формировать датасеты в нужном вам формате.

Исследование сайта донора

Написание любого парсера начинается с исследования сайта донора. Именно на этом этапе вам потребуются знания HTML/CSS и вероятнее всего каких-то основ JavaScript, если сайт использует динамический контент, загружаемый через Ajax. Исследование сайта осуществляется средствами инструментов разработчика, которые встроенны практически во все современные браузеры. К примеру в Mozilla Firefox или Google Chrome. В рамках этого раздела документации по мета-языку мы не ставим перед собой цели научить вас исследованию сайтов, но мы оставим ссылки на наиболее интересные материалы, где вы найдете информацию как это делать.

Структура конфигурации диггера

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

Она разделена на 3 большие логические части. Первая включает в себя начальные установки диггера, вторая часть используется для инициализации итераторов, а третья содержит в себе основную логику вашего парсера - последовательность команд, которую выполнит диггер, когда вы его запустите. Первые две части опциональны и могут быть использованы по мере надобности, третья же часть должны быть в конфигурации всегда, в противном случае диггер просто ничего не сделает, поскольку не найдет ни одной команды для выполнения.

Ниже мы приводим фрагмент конфигурации, содержащей в себе все три вышеописанные части.

                ---
# ПЕРВЫЙ БЛОК - НАЧАЛЬНЫЕ УСТАНОВКИ ДИГГЕРА
- config:
    debug: 2
    agent: Firefox
    proxy: 1.1.1.1:80

# ВТОРОЙ БЛОК - ИНИЦИАЛИЗАЦИЯ ИТЕРАТОРА ПО ДАТАМ
- iterator:
    - type: date
    interval: 50
    period: 100
    template: '%B %d %Y'

# ТРЕТИЙ БЛОК - ОСНОВНАЯ ЛОГИКА ПАРСЕРА САЙТА
- do:
    - walk:
        to: http://www.com
        do:
        - find:
            path: td.ages
            

Первый блок начинается с кодового слова config и содержит начальные установки уровня отладки, установки идентификатора агента для маскировки под браузер и директиву для использования пользовательского прокси сервера для запросов. Более подробно про эти и другие настройки вы можете прочитать в разделе базовых настроек.

Во втором блоке, который открывается командой iterator происходит инициализация итератора по датам. Существует несколько видов итераторов и вы познакомитесь с ними в соответствующем разделе.

Третий блок конфигурации, открывающийся командой do, содержит основную логику парсера сайта, в данном примере - зайти на страницу http://www.com и найти элемент (или элементы) по CSS пути td.ages. В этом разделе документации вы найдете описание всех доступных команд.

Обратите внимание!
Все три блока расположены в корневой части (начинаются без отступов) конфигурации.

Далее мы рассмотрим эти блоки более детально, но перед этим давайте познакомимся с объектами среды выполнения, поскольку без этих базовых знаний вам будет несколько сложнее понять как работает диггер и чем он может оперировать.