레이블이 D등급인 게시물을 표시합니다. 모든 게시물 표시
레이블이 D등급인 게시물을 표시합니다. 모든 게시물 표시

2020년 3월 14일 토요일

20대 국회 D 등급 법안을 제안하고 동조한 의원들



뉴스타파 에서 보기에 20대 국회에서 통과된 일부 법안은 단순히 건수 늘리기 위한 법안으로 간주하고 D 등급으로 평가한 법안들이 있습니다뉴스타파 기사에는 대표 제안자와 공동 제안자의 이름이 나오지 않지만 웹 스크래핑으로 찾을 수 있었습니다.   


20대 국회에서 통과된 D 등급 법안은 총 391개인데 위원장 명의로 된 법안을 제외하면 316개 법안에  의원 이름이 들어 있습니다.  보통 평균 10명의 의원이 공동 발의합니다.  의안 번호 2023745의 경우 김종회 의원이 대표 발의하고 강석호 의원 등 9명이 공동으로 발의에 참여했었습니다.
D 등급 법안에 발의한 의원을 노드를 구성하고 대표 발의자와 공동 발의에 참여한 의원끼리 연결시키면 아래 그림을 얻을 수 있습니다.    웹 스크래핑으로 얻은 데이터를 파이썬으로 정리하고 cytoscape라는 프로그램으로 그렸습니다.



첨부된 d-rate.cys 파일cytoscape에서 열면 위 그림을 볼 수 있습니다


2020년 3월 8일 일요일

법안 제안자 찾기


국회도 정보화 시스템이 구축되어 있어서 법안을 누가 제안했고 본회의에서 찬성자와 반대자가 누군였는지 찾을 수가 있습니다.  한두개 법안에 대해서  별 어려움이 없습니다. 뉴스타파 에서 자체 판단하기로 20대 국회에서 통과된 일부 법안은 단순히 건수 늘리기 위한 법안으로 보고 D 등급으로 평가한 법안들이 있습니다. 이들 법안의 제안자가 누구인지 찾아 보려면 웹 스크래핑을 사용해야 합니다.   D 등급 법안이 391개나 되기 때문입니다.

http://likms.assembly.go.kr/bill/main.do 에 의안번호를 넣으면


<그림 1>


의안번호, 제안일자, 제안자, 문서, 제안회기, 제안이유 와 같은 기본 내용이 나오고 법안의 상세 내용은 문서에 따로 첨부되어 있습니다

<그림2>

여기서는  법안의 제안자를 찾으려고 하는데 제안자가 단독인 경우는 드물고 공동  발의의 경우가 많습니다.   제안자 목록을 클릭하면  공동 발의자 의원 명단이 나옵니다.

<그림 3>

이 과정을 웹 스크래핑으로 자동화해야 합니다.  그림 2의  “제안자 목록이 보이는 웹 페이지의 소스를 보면 아래와 같습니다


 <!--        
<a href="javascript:ajaxShowProposerList('PRC_E1Y9P1O1L0Z7D1M7Q1N2I5B8O7X9V8');">
<img src="/bill/images/sub/btn_pp01.gif" alt="제안자 목록" /></a>
<!-- layerpop -->

제안자 목록을 클릭하면  인수 billID를 넣어 java script 함수인 ajaxShowProposerList()를 호출하는데 이 함수는 아래와 같이 정의되어 있습니다




function ajaxShowProposerList(billId) {
 var url = pageContextRootPath + '/coactorListPopup.do';
 var param = "?billId=" + billId;
 url += param;
 commonPopup(url, 830, 500);
}



결국 billID를 포함시킨 아래 URL만 호출하면 특정 법안의 제안자 목록을 볼 수 있습니다.

https://likms.assembly.go.kr/bill/coactorListPopup.do?billId=PRC_E1Y9P1O1L0Z7D1M7Q1N2I5B8O7X9V8

이 페이지가 그림 3이고 발의의원 명단은 아래 html로 문장으로 되어 있으니



<p><strong> 발의의원 명단</strong></p>
<a href="http://www.assembly.go.kr/assm/memPop/memPopup.do?dept_cd=9770960" target="_blank">김종회(무소속)</a>
<a href="http://www.assembly.go.kr/assm/memPop/memPopup.do?dept_cd=9770931" target="_blank">강성호(자유한국당)</a>

아래 파이썬 문으로 명단을 추출합니다.


    html = urlopen(..)
    bsObj = BeautifulSoup(html, "html.parser")
..
    proposers = []
    for persons in bsObj.findAll("a", {'target' : '_blank'}):
        count += 1
        proposers.append(persons.get_text())

billID는  열린국회정보 본회의 처리안건_법률안  정보를  XLS 파일로 받아보면  링크 URL열에 있습니다