Как скачивать результаты выборов с сайта ЦИК РФ с помощью языка R
?
Цель - показать, как с помощью статистического пакета R
за короткое время можно превратить неудобные для ручного сбора результаты выборов на сайте ЦИК РФ в таблицу, готовую к статистическому анализу.
Для иллюстрации я использую результаты выборов в Государственную Думу 2016г. по УИКам Москвы (на момент 13 июня 2017 они отсутствовали в базе данных "Календаря выборов" движения Голос). Кроме этого, я описываю, как можно собирать информацию о результатах выборов на уровне регионов или даже УИКов в нескольких регионах в рамках одних выборов.
Часто те, кто анализирует результаты выборов, собирают электоральную статистику с сайта ЦИК руками, однако, есть ряд других более удобных способов.
-
Сам ЦИК предоставляет возможность работать с открытыми данными. Стоит учесть, что охват небольшой.
-
Проект "Календарь выборов" движения "Голос" совместно с Сергеем Шпилькиным даёт доступ к результатам федеральных, региональных и муниципальных выборов. Проект полезный, и я бы первым делом искала результаты выборов именно в их базе, поскольку она кажется наиболее полной на данный момент. Тем не менее, возможности создателей не безграничны, так что файлы с данными представлены не по всем региональным и муниципальным выборам.
-
Иван Бегтин недавно опубликовал lazyscraper, скрипт в Питоне. С его помощью можно собирать различную информацию с страницы в Интернете, а работает он из коммандной строки. Можно собрать информацию о результатах выбора хотя бы с одной избирательной комиссии не вручную.
Знатоки Питона догадываются, как расширить функционал этого скрипта так, чтобы можно было собирать информацию с ряда страниц, но я всего лишь знаю, как пользоваться функцией lapply()
.
- Наконец, можно написать код на любом другом знакомом языке самостоятельно. Например, в
R
.
Полагаю, эту репозиторию найдут полезной те, кто профессионально и не очень интересуется выборами в России в общем и содержимым сайта ЦИК РФ в частности. Особенно если приходится собирать статистику по выборам.
-
Отдельно доступны файлы, содержащие ссылки на результаты выборов в ГД 2016 по пропорциональной системе и одномандантным округам. Они здесь скорее на всякий случай.
-
Браузер с возможностью просмотра кода страницы (Список браузеров с объяснениями, по-английски)
Для тех, кто чувствует себя не так уверенно в отношении возможностей овладевания материалом, я бы рекомендовала сначала ознакомиться или же освежить свои знания со следующим материалом
- в отношении
R
:
-
Типы данных, в частности, списки (отрывок из книги Евгения Балдина, 2008г.).
-
Функции в общем (что это такое и как их писать, по-английски).
-
Функции применения функций к ряду случаев, так называемая "группа apply" (большая обзорная статья, по-английски).
-
Зачем и как работает пакет
{magrittr}
. Чаще всего используется%>%
- подробное введение к нему и не только здесь, по-английски. -
Как работать с пакетом
{data.table}
. Есть хорошее введение Владислава Грозина в секции Документов в ВКонтакте (я не сижу в ВК, поэтому более точную ссылку дать не могу). Помимо этого есть перевод англоязычного введения в содержимое пакета Андреем Огурцовым, очень наглядное пособие.
- в отношении веб-разработки:
-
CSS-указатель (коты в помощь овладеванию базовыми навыками, по-английски).
-
regex/регулярные выражения (небольшое, но полное учебное пособие, по-английски). Когда-то помогло и мне.
-
Знания о методах GET и POST лишними тоже не будут. W3schools.com дают базовую ясную информацию по этому предмету.
Скачивание большого объёма данных требует времени, поэтому не надо огорчаться, если всё срабатывает не за пару секунд.
Использованное решение перевода из списка списков в базу данных c помощью внешнего указателя в файле с скачианием информации с сраницы было частично взято с сайта Stack Overflow, однако, в настоящее время я не могу найти ссылку на страницу, чтобы сделать референцию как положено по лицензии cc by-ca 3.0. Как только это произойдёт, я обязательно обновлю информацию.
Я люблю получать письма на nilchenko[at]eu.spb.ru. Буду также рада, если кто-то решит продолжить это дело, усовершенствовав код или подход в целом. Возможно, даже напишет пакет для R
!