Spider/Parser for gathering the election data from Russian Election Committee website
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
src/main/java/net/shipilev/elections/cikrf
README
gather.sh
pom.xml

README

ПАУК ДЛЯ СБОРА ДАННЫХ С САЙТА ЦИК РФ
-------------------------------------------------------------------------------

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

Перед тем как пользоваться роботами, их нужно собрать из исходных кодов в
выполняемые JAR файлы. Для этого вам потребуется Git, Maven, и установленная Java.
Пример ниже подразумевает запуск из командной строки.

1. Клонируем репозиторий себе в папку cikrf-spider:
 $ git clone https://github.com/shipilev/cikrf-spider.git cikrf-spider

2. Переходим в папку с исходниками:
 $ cd cikrf-spider

3. Запускаем сборку при помощи Maven:
 $ mvn clean install

В итоге в папке target/ должны появиться исполняемые JAR-ы cikrf-spider.jar и
cikrf-parser.jar -- ими уже можно пользоваться.

*** СКАЧИВАНИЕ ДАННЫХ ***

  Робот ходит по сайту ЦИКа и сваливает страницы первого/второго/третьего
  уровня в download/. Сами страницы представляют собой чистый HTML, так что при
  подозрении на ошибку в парсере, можно на них пристально посмотреть.

  Запуск паука для сбора:
    $ java -jar target/cikrf-spider.jar -r <URL>

  При запуске с "-h" можно увидеть настройки, если приспичит что-нибудь менять.
  Вам нужно будет указать корневой URL (основную страницу выборов на сайте ЦИК)
  для конкретных выборов. Ожидается ссылка на "Сводную Таблицу Результатов Выборов".

  Не скачивайте данные, если вам это не сильно нужно; сайт ЦИКа нежный и лишних
  электромагнитных воздействий не любит.

*** РАЗБОР ДАННЫХ ***

  Вторая часть робота берёт скачанные страницы и парсит их в CSV.

  Запуск:
    $ java -jar target/cikrf-parser.jar

  Опять же, парсеру можно переопределить место, куда генерить CSV.
  Воспользуйтесь "-h".

  Оно разродится несколькими CSV'шками, с разной степенью детализации:
    output-ciks.csv: данные с главной страницы
    output-tiks.csv: данные со страниц первого уровня (т.е. ТИКов)
    output-uiks-s.csv: данные с второго уровня (т.е. сумм по УИКам)
    output-uiks.csv: данные с третьего уровня (т.е. данных по отдельным УИКам)

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