Парсим iCal. Забрать данные с iCal? Нет ничего проще.

Парсим iCal. Забрать данные с iCal? Нет ничего проще.

Сегодня мы будем писать скрипт для парсинга различных ресурсов, использующих для передачи данных о событиях файлы в формате iCal. Формат этот был придуман компанией Apple и в настоящее время на многих сайтах вы можете экспортировать события из календаря сайта в этом формате. В этом случае вам не нужно будет скрапить сам сайт и его HTML, а только лишь файл в формате iCal.

Diggernaut.com нативно поддерживает этот формат и автоматически переводит его в XML. И далее мы можем работать с этими данными также как с обычной HTML страницей.

Давайте посмотрим как это работает на примере календаря Science Fiction Conventions, найденного мной на просторах сайта icalshare.com. Начнем с написания раздела с установками. На первом этапе нам нужно будет установить диггер в дебаг режим с уровнем 2. Только так мы сможем увидеть исходный код забранного нами файла с календарем. А исходный код нам нужен, чтобы написать навигационную логику к блокам с данными, которые мы ходим забрать.

Сам календарь находится по адресу: https://www.google.com/calendar/ical/lirleni%40gmail.com/public/basic.ics

Итак, начало нашего конфига будет таким:

В этом коде мы устанавливаем уровень Debug в 2, конфигурируем парсер использовать Firefox как имя браузера и забираем iCal файл. Теперь нам нужно зайти в свой аккаунт на Diggernaut.com, выбрать существующий проект (или создать новый) и создать в нем новый диггер, где в качестве конфига использовать вышеуказанный код.

Удостоверимся, что парсер находится в Debug режиме (в колонке Status должно быть указано Debug). Если нет, то нужно перевести парсер в дебаг режим, выбрав его в колонке Status. После чего мы должны запустить его. Как только диггер отработает, мы можем просмотреть лог запуска нажав на соответствующую иконку.

Как мы видим структура страницы разбита на блоки . Так что все, что нам остается — это пройти во все блоки event и забрать все поля из каждого такого блока. Итак, давайте выберем один блок и отформатируем его, чтобы было лучше видно какие поля мы будем забирать и какие фильтры будем использовать.

Мы не будем забирать все поля, а заберем лишь summary, description, start datetime, end datetime и location. Сделать это очень просто, сначала мы заходим в блок event, создаем объект для наших данных, далее проходим в блоки полей, парсим данные и кладем из в поля нашего объекта. После чего сохраняем объект.

Давайте запишем наш готовый конфиг в диггер и запустим его. Когда он закончит работу, перейдем в раздел с данными и удостоверимся, что они в полном порядке. Там вы увидите нечто похожее на:

Теперь переведем наш диггер в режим Active чтобы мы смогли скачать данные (пока диггер находится в режиме Debug, вы не можете скачивать данные, только просматривать выборку данных). Снова запустим его, дождемся окончания выполнения, перейдем в раздел с данными и скачаем их в нужном нам формате. Пример в формате XLSX вы можете скачать здесь.

Как вы видите, парсить данные с iCal ресурсов у нас очень просто!

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *