레이블이 제안자인 게시물을 표시합니다. 모든 게시물 표시
레이블이 제안자인 게시물을 표시합니다. 모든 게시물 표시

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열에 있습니다