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



댓글 없음:

댓글 쓰기