obshtestvo / sledi-parlamenta

Надежден инструмент за справки и анализ на парламентарната активност
http://parliament.obshtestvo.bg/
The Unlicense
13 stars 3 forks source link

Crawler, Извличане на закони, кога са предложени, как са гласувани, кога са приети #26

Open antitoxic opened 10 years ago

antitoxic commented 10 years ago

Начин на извличане

Списък с закони

На следния адрес има списък с приети закони: http://www.parliament.bg/bg/laws/

Всеки закон преди да е приет е "Законопроект"

Не гледаме "последни закони". Вместо това отдолу има нещо календар с годините. Трябва да обходим всяка година и всеки месец и да видим законите приети този месец. gif_screencast_2

И така в страницата на всеки месец ще обходим всеки закон, за да извлечем информация от него.


Примерен закон

http://www.parliament.bg/bg/laws/ID/14656/

Събираме си от тук инфото за да го запазим в нашата база данни. Специално внимание обръщаме към датата на приемане.

gif_screencast_3


Взаимовръзка закон<>гласуване

Със "датата на приемане" правим проверка в нашата база данни за пленарното заседание на същата дата. Търсим по темата на гласуваното. Може да има няколко съвпадения, тоест няколко гласувания. Така вече знаем как са гласували партиите и депутатите по този закон.

Ако нямахме база данни, ето пример как изглежда ръчното търсене в excel-ските документи:

gif_screencast_4

Поддържане на актуален списък със закони

Първият път когато събираме закони ще минем през всичките години и месеци. Оттогава ще минаваме само за последния месец и последния ден, за който нямаме информация. И така ще обновяваме базата данни.

Неприети закони

Водят се отхвърлени или оттеглени законопроекти. Ето примери:

Тях няма да ги намерим в списъка със закони по-горе, понеже те не са официално са закони, а _законопроекти_.

За да можем да съберем неприетите закони и тези чакащи решение трябва отново да правим обхождане по година и месец, но вместо страницата със закони, тази на законопроекти: http://www.parliament.bg/bg/bills

Отново отдолу има календар и отново под същата форма Година - Месец.

За да разберем дали 1 законопроект е станал закон или не, трябва да проверяваме хронологията му:

gif_screencast_5

Поддържане на актуален списък със неприети закони

Това е малко по-"занимавка" отколкото със приетите. Както и при приетите, правим едно начално обхождане на всички години и месеци. След което ще проверяваме единствено последния месец и датите за които нямаме информация.

Допълнението е че трябва да проверяваме и за законопроекти за които още не знаем дали са отхвърлени или чакат решение. Като този: http://www.parliament.bg/bg/bills/ID/13270 gif_screencast_6

_Пояснение_: Някои законопроекти точно като горния пример, който е от 2011г изглежда не се решават или не се обновява сайта на парламента с решението им. За тях няма как да знаем дали е грешка или не и ще е трябва да си ги проверяваме всеки ден.


Визуализация в сайта

Това е само за да си представим как може да се визуализира. С оглед естетика и улеснен достъп търпи промени

На страницата на закона ще се появяват малки диаграми за всяко гласуване на този закон. Диаграмите ще са bar chart с 2 колонки за ДА и НЕ. Самите колонки ще са изградени от гласовете на всеки депутат и затова ще са шарени включващи цветовете на партията на всеки депутат.

Пример: http://fiddle.jshell.net/W628k/1/show/ temp_snapshot

Под диаграмата ще може да се показва и скрива списък със депутатите и тяхното поименно гласуване за закона.

mitio commented 10 years ago

:+1: за употребата на gif-чета за илюстрация :)

tsikov commented 10 years ago

Би било много хубаво ако позволявахме на хората да видят diff между стария и новия закон. Дали ще бъде възможно да го имплементираме на някакъв по-късен етап?

mitio commented 10 years ago

:+1: за diff-овете. Ако имаме пълните текстове на законите, може да стане, но не съм сигурен как стоят нещата там. Трябва да поразпитам някой по-грамотен юридически от мен.

tsikov commented 10 years ago

@Glamdring се заема с тази задача. Йей. Ние ще използваме неговото API за да си напълним базата.

Glamdring commented 10 years ago

Така, API-то вече връща цялата информация от мойта база + линк към XML-а с метаданни за всеки законопроект, откъдето много лесно може да се вземе информация. А като еднократна операция в някакъв бъдещ момент, когато сметнете за добре, ще scrape-на и export-на всички минали документи (в мойта база има само от август 2013).

antitoxic commented 10 years ago

@Glamdring това с метаданнитее имплементирано или още не? Пробваме с @jsibelius : http://alerts.obshtestvo.bg/api/list?since=1395588822713&token=token&sources=ParliamentLawProjects

но additionalMetaData винаги е null, a ID-то изглежда да е от базата на alerts, та не може да го свържем с линк към парламента.

antitoxic commented 10 years ago

PS: да разбираме че с Петко от този линк към XML-а ще го parse-ваме и извкличам допълнителните детайли от там?

Glamdring commented 10 years ago

да, additionalMetaData не я връщам, защото XML-ът е достатъчен. П.П. Изтрий token-а от коментара :)

antitoxic commented 10 years ago

Token done. Извинявай, може би тъпея, но как да стигна до xml-a?

Glamdring commented 10 years ago

А, забравих да кажа, да - metaDataUrl

antitoxic commented 10 years ago

Нормално ли е metaDataUrl винаги да е null?

Glamdring commented 10 years ago

Не би трябвало..ама виждам, че е :) ще проверя довечера

Glamdring commented 10 years ago

Мда, ако бях деплойнал новата конфингурация, щеше да има metaDataUrl :) ще почне да се появява за новите законопроекти (а всички предишни ще ги "извлачим" наведнъж в близко бъдеще, и си напълните базата с тях еднократно)

Glamdring commented 10 years ago

Работи ли вече както трябва?

tsikov commented 10 years ago

Работи! Няма нужда да „извлачваш“ все още. :) Приоритизирали сме към момента да визуализираме гласуванията и присъствието на депутатите.