Загрузка данных с сайта открытых данных data.gov.ru

В рамках работы над новым проектом возникла задача поиска и загрузки некоторых наборов данных с сайта открытых данных России. На станице сайта, предоставляющей доступ к реестру наборов открытых данных, присутствует возможность экспорта реестра в форматах csv или xls. Это очень хорошо, а главное удобно.



image


Загружаем набор в формате csv. В файле содержится следующая информация о наборе данных:


  • Название набора;
  • Идентификатор набор;
  • Описание набора данных;
  • Владелец набора данных;
  • Контактное лицо;
  • Телефонный номер ответственного лица;
  • Адрес электронной почты ответственного лица;
  • Формат;
  • Дата актуальности набора;
  • Дата первой публикации набора;
  • Дата последнего внесения изменений;
  • Содержание последнего изменения;
  • Рубрика;
  • Уровень власти ответственного органа — владельца набора;
  • Количество просмотров;
  • Количество скачиваний;
  • Ключевые слова;
  • Общая сумма пользовательских оценок;
  • Положительные пользовательские оценки;
  • Негативные пользовательские оценки;
  • Ссылка на версию набора;
  • Ссылка на структуру набора.

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


Но есть одно НО. В реестре должны присутствовать почти двенадцать с половиной тысяч наборов данных, а в файле нет даже двенадцати тысяч. Далее возникает вопрос: версия реестра в файле устарела или выгружена информация не обо всех наборах?


Одним из самых популярных наборов данных является «Вакансии из Общероссийской базы вакансий Работа в России». Он обновляется ежедневно. Если найти его в файле, можно приблизительно определить, когда был сформирован файл. Итак, дата последнего изменения, указанная в файле, — 07-10-2016. Следовательно, можно предположить, что файл был сформирован еще в октябре. Соответственно, данные устарели.


Второй заход на цель. Скачиваем файл в формате xls. И тут полное разочарование – файл пустой. Еще попытка. Тот же результат. Видно не судьба.


Но тут же есть API! Регистрируемся и получаем ключ. Все просто и понятно. Загружаем реестр наборов данных с помощью API. Получаем 10000 записей. Явно меньше, чем ожидалось. Присутствует идентификатор набора данных, название, владелец, рубрика. И все? А почему рубрика на английском? Видимо для удобства пользователя. Но нас так просто не запугать. Пройдемся по всем наборам и попытаемся получить дополнительную информацию. Почти сразу прилетает «Your IP is banned for very frequent requests». Да и дополнительных данных там не так уж и много. Попытка получить версии для набора данных «Вакансии из Общероссийской базы вакансий Работа в России» вернула нулевой список. Совсем печально.


Ничего не поделать. Придется грузить данные непосредственно с сайта. Будем писать веб скраппер (для чистоты эксперимента). Возможно в дальнейшем он будет использоваться как часть проекта. И на первый взгляд, и на второй особых проблем возникнуть не должно. Но как всегда есть небольшая проблема. Точнее задача поделилась на две: загрузить информацию из реестра наборов данных, а затем дополнить ее из паспорта набора.


Описание разработки скраппера — тема для отдельной статьи, и углубляться в нее я сейчас не буду. Главная трудность, с которой пришлось слегка побороться, — это доступность сайта. Жизнь оказалась неидеальна, и страницы загружались не всегда. Это пришлось учесть в алгоритме загрузки (добавить задержки и дополнительные попытки при скачивании).
В итоге данные загрузить удалось, но заняло это около восьми часов.
Теперь необходимо проверить качество загруженных данных.


Всего из реестра наборов данных загрузилось 12440 записей при заявленных 12444. Как такое могло получиться? Хороший вопрос, ответ на который еще придется поискать. Возможно, что-то было добавлено за те восемь часов, которые продолжалась закачка. Возможно, какие-то программные ошибки. В следующий раз придется поставить более подробный лог, чтобы разобраться.


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


Название Ссылка
Пункты приёма заявлений и выдачи УЭК /opendata/2983008078-uec
Пункты выдачи активации ЕСИА /opendata/2983008078esia
Перечень услуг, предоставление которых организовано по принципу «одного окна» /opendata/2983008078-uslugi
Перечень многофункциональных центров предоставления государственных и муниципальных услуг /opendata/2983008078-mfc
Квалификационные требования к образованию и стажу (опыту) работы по специальности /opendata/3123343148-uodmss

Посмотрим набор данных «Пункты приёма заявлений и выдачи УЭК».


image


Не указана организация владелец. Согласно паспорту, это «Комитет по информатизации Ненецкого автономного округа».


Далее «Пункты выдачи активации ЕСИА»


image


Записей две. Но проблема в первой. И это опять «Комитет по информатизации Ненецкого автономного округа». Вероятно, по какой-то причине добавили новую версию набора с новым идентификатором.


Аналогичные проблемы и у наборов данных «Перечень услуг, предоставление которых организовано по принципу одного окна» и «Перечень многофункциональных центров предоставления государственных и муниципальных услуг».


Все они идут подряд на 41 странице. Почему в реестре не отображается название организации, хотя в паспорте он есть? Этот вопрос хочется переадресовать службе поддержки сайта.
А вот для набора данных «Квалификационные требования к образованию и стажу (опыту) работы по специальности» в реестре честно указано, что информации нет.


image


И правда нет.


image


Как было показано выше, названия наборов данных могут повторяться. А сколько наборов данных имеет одинаковое название и принадлежит одному владельцу?


Сделаем выборку из данных: возьмем только названия наборов данных и владельцев. Посчитаем количество повторов. Оставим только те наборы данных, которые встречаются более одного раза.
Всего таких наборов данных 785.


Ниже на графике топ 10 владельцев повторяющихся наборов данных.


image


Почему так получается?


Посмотрим распределение повторов.


image


Большинство наборов повторяется два раза. Возможно владельцы данных не определились, в какую категорию их отнести, и разместили сразу в двух. Добавим к предыдущей выборке категорию и посмотрим сколько неуникальных наборов осталось – 692.


Не так много отсеялось.


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


Выводы


Загрузка реестра наборов данных на данный момент возможна только с помощью скреппинга.
При экспорте реестра загружаются устаревшие данные.


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


Что дальше? После загрузки и первичного анализа данных можно более тщательно проанализировать наборы данных, рассмотреть, насколько часто они используются, обновляются, в каких форматах хранятся и т.д.

Метки:
загрузка данных, анализ данных, скраппинг, открытые данные