old-bibigon / parse-cik

Скрипт для скачки данных о составе избирательных комиссий с сайта ЦИКа
MIT License
9 stars 8 forks source link

Резервы #2

Closed tatyanavolkova closed 6 years ago

tatyanavolkova commented 10 years ago

Очень хотелось бы получить возможность скачивать резервы избирательных комиссий. На сайте вроде бы есть такой раздел, там всё аналогично: http://www.vybory.izbirkom.ru/moscow_city/ik_r_tree/ Но у меня пока не получилось переделать код, чтобы скачать резервы :(

old-bibigon commented 10 years ago

Так нет смысла делать: 1) там id тиков и уиков не совпадают и чтобы связать их придётся по тексту как-то их сравнивать, 2) надо отключать весь разбор тиков, иначе не скачается.

Более реальным кажется использовать номер уика, потому что похоже он фигурирует в ссылке http://www.moscow_city.vybory.izbirkom.ru/moscow_city/ik_r/1788, но это надо ещё и проверить как-то, может этак с сотню посмотрите руками по разным областям и скажете результат ;) Програмно там нечего сравнить - ни адреса ничего нету у резерва :( Ну и так не получится скачать резервы ТИКа и избирательных комиссий (их всё-равно как-то хитро придётся связывать с основными), но эти и не у всех заполнены :/

kalenkov commented 10 years ago

Складывается ощущение, что базы резерва и основного состава УИК никак не связаны. Чем думали разработчики уму непостижимо.

Кстати бывает, что резерв приписан не к конкретному УИК, а прямо к ТИКу http://www.chechen.vybory.izbirkom.ru/chechen/ik_r/220200076392 http://www.zabkray.vybory.izbirkom.ru/zabkray/ik_r/2752000276329

Я думаю, что если собирать данные по резерву, то в виде отдельной базы. Там потом желающие могут заняться сопоставлением ТИК и УИК в них.

old-bibigon commented 10 years ago

Ну дык и я про тоже :) Резерв УИКов я набросал как качать (из http://www.moscow_city.vybory.izbirkom.ru/moscow_city/ik_r/1788), для Кировской области вроде нормально легли с привязкой к таблице уиков. А с ТИК и ИК буду позднее думать, поди чего получится на выходных :/

old-bibigon commented 10 years ago

хм... посмотрел, по имени довольно много тиков соотнеслись с существующими, но есть пара детских грабель. 1) резервный состав ТИКа и УИКов приписан к городу в целом, в то время как обычные составы разнесены по районам:

2) пара непоняток с административным делением:

2.5) "выпавшие" отдельное уики, которые дублируют уже существующие (не критичны т.к. составов у них нет, а уик ссылается на район):

Под 1 и 2 заводить отдельные ТИКи не хочется, сильно хотелось бы связать их с уже существующими, иначе придётся создавать их с фейковыми iz_id (скорее всего отрицательными и потом как-то дополнительно отфильтровывать).

УИКи берутся по номеру, вроде ругани нет, но цик по неправильному номеру просто пустой список выдаёт - хз действительно ли он полный так получается :/

kalenkov commented 10 years ago

А ещё бывает резерв для группы УИК http://www.khabarovsk.vybory.izbirkom.ru/khabarovsk/ik_r/227200067021 я пока слабо представляю, что с этим винегретом делать

Вот тут http://www.khabarovsk.izbirkom.ru/etc/struktura_rezerva_5_version.doc описана структура резерва в Хабаровском крае. Большие выдумщики живут у нас на дальнем востоке.

old-bibigon commented 10 years ago

блин, в таком виде оно сейчас не скачается, надо разбор дерева резервов ещё дописывать, но опять же группу в один не свернёшь :(

old-bibigon commented 10 years ago

Чем дальше в лес - тем толще партизаны А ещё бывает, что для уика записи нет, а для резерва есть :\

old-bibigon commented 10 years ago

мдя... костыльно написал привязку, но переписывать через некоторую формализацию имени уже лень, да и не факт что лучше станет :( В принципе 9 тик и 1022 уик только не соотнеслись с основными (всего 2793 и 94964). Грузятся по ключу --with-reserve, дефолтово выключено, фейковые комисии имеют отрицательный iz_id (по такому лучше и фильтровать, если будет необходимость)

tatyanavolkova commented 9 years ago

По Костроме резервы не скачиваются :(

$ python down.py --with-reserve --region=kostromaTraceback (most recent call last): File "down.py", line 54, in vals = ik.parse_reserve(recursion=True) File "/home/tatyana/Documents/ELECTIONS/СоставыКомиссий/parse-cik-master/cik.py", line 215, in parse_reserve self.parse_reserve_childs(recursion) File "/home/tatyana/Documents/ELECTIONS/СоставыКомиссий/parse-cik-master/cik.py", line 329, in parse_reserve_childs found_ik.parse_reserve(recursion) File "/home/tatyana/Documents/ELECTIONS/СоставыКомиссий/parse-cik-master/cik.py", line 215, in parse_reserve self.parse_reserve_childs(recursion) File "/home/tatyana/Documents/ELECTIONS/СоставыКомиссий/parse-cik-master/cik.py", line 329, in parse_reserve_childs found_ik.parse_reserve(recursion) File "/home/tatyana/Documents/ELECTIONS/СоставыКомиссий/parse-cik-master/cik.py", line 206, in parse_reserve ehtml = lxml.html.fromstring(data_reserv) File "/usr/lib/python2.7/dist-packages/lxml/html/init.py", line 704, in fromstring doc = document_fromstring(html, parser=parser, base_url=base_url, _kw) File "/usr/lib/python2.7/dist-packages/lxml/html/init.py", line 600, in document_fromstring value = etree.fromstring(html, parser, _kw) File "lxml.etree.pyx", line 3032, in lxml.etree.fromstring (src/lxml/lxml.etree.c:68106) File "parser.pxi", line 1785, in lxml.etree._parseMemoryDocument (src/lxml/lxml.etree.c:102455) File "parser.pxi", line 1666, in lxml.etree._parseDoc (src/lxml/lxml.etree.c:101214) File "parser.pxi", line 1035, in lxml.etree._BaseParser._parseUnicodeDoc (src/lxml/lxml.etree.c:96124) File "parser.pxi", line 582, in lxml.etree._ParserContext._handleParseResultDoc (src/lxml/lxml.etree.c:91275) File "parser.pxi", line 683, in lxml.etree._handleParseResult (src/lxml/lxml.etree.c:92461) File "parser.pxi", line 631, in lxml.etree._raiseParseError (src/lxml/lxml.etree.c:91889) lxml.etree.XMLSyntaxError: line 87: Tag nobr invalid

tatyanavolkova commented 9 years ago

По Новосибу резервы скачиваются, но там та проблема, о которой писали выше - у резервников указан id ТИКа, а не УИКа :(

old-bibigon commented 9 years ago

Только сейчас проверил Кострому - нормально скачалось. Это, возможно, проблемы с инетом были - как-то скачался не полный файл, удалите из orig/kostroma или всё или что-нибудь выборочно (последний файл по дате или все _reserve) и перекачайте. Скрипт смотрит есть ли файл в orig и не перекачивает его снова. С -v скрипт становится более болтливым, и вы хотя бы номер УИК будете знать где он встал.