본문 바로가기
보안프로젝트

[보안프로젝트] 파이썬으로 공공데이터 Open API 이용하기

by L3m0n S0ju 2021. 8. 9.

1  Open API란?


1.1     Open API 개념

그림 1-1

Open API(Open Application Programming Interface)란 누구나 사용할 수 있도록 공개된 API를 말하며 인터넷 이용자가 일방적으로 웹 검색 결과 및 사용자인터페이스(UI) 등을 제공받는 데 그치지 않고 직접 응용 프로그램과 서비스를 개발할 수 있도록 공개된 API를 말한다. 지도 서비스 및 다양한 서비스에서 시도되고 있으며 누구나 접근하여 사용할 수 있다는 장점이 있다.

 

하지만 공개된 Open API 일지라도 데이터 사용 용량에 따라 비용을 지불해야 하거나 사용 횟수에 제한이 있는 경우가 있고 완전히 무료일지라도 사용자가 회원가입을 통한 신원확인 서비스제공자로부터 인증 키를 별도로 발급받아 오픈

API 사용토록 장려함으로써 무분별한 데이터 남용을 막는다.

 

 


그림 1-2

그림 1-2는 현재 대한민국 정부에서 공공데이터 포털(https://www.data.go.kr/) 통해 제공하는 공공데이터의 비율을 나타내고 있다. 공공데이터 포털에서 제공하는 Open API에는 도로명주소조회서비스, 동네예보정보조회서비스 여러 가지 서비스가 있는데 2021-01-24 시점으로 Open API 6,504건을 운영 제공하고 있다.

 

공공데이터 포털 외에도 Open API를 제공하는 사이트들은 많다. 두 번째로 규모가 있는 사이트로는 서울열린데이터광장(https://data.seoul.go.kr)이 있고 2021-01-24을 시점으로 Open API 4,992건을 운영 및 제공하고 있다. 또 우리나라 행정통계, 사업체 부문 등의 통계 데이터를 제공하는 통계청 마이크로데이터(https://mdis.kostat.go.kr)나 채용정보, 직업정보 등의 데이터를 제공하는 WorkNet(http://openapi.work.go.kr) 등이 있다.

 

 

 

 


1.2     Open API 이용 신청하는

과정 1-1

필자는 서울 열린데이터 광장 포털에서 서울시의 코로나 환자들의 정보를 제공하는 Open API를 이용하겠다. Open API를 이용하기 위해서는 과정 1-1처럼 포털에 접속 후 회원가입을 한 뒤 인증키를 받아야 사용할 수 있다.

 

 

 

 

 

과정 1-2

회원가입을 완료한 뒤 과정 1-2에서 서울시 코로나19 확진자 현황이라고 검색한다.

 

 

 

 

 


과정 1-3

서울시 코로나19 확진자 현황으로 들어왔으면 아래에 Open API에서 인증키 신청을 한다.

 

 

 

 

 

 

 

과정 1-4

신청을 하면 인증키를 받을 수 있다.

 

 

 

 

 

 

 

과정 1-5

다시 과정 1-3 페이지의 아래로 가면 과정 1-5처럼 샘플 URL이 있다. 샘플 URL 중간에 아까 받은 인증키를 삽입 후 브라우저 URL 폼에 검색하면 서울시 코로나 환자의 데이터를 실시간으로 받을 수 있다.

 

과정 1-6

 

 

 


파이썬을 활용한 Open API 사용법

2.1     파이썬을 활용한 Open API 사용법

 

프로그램명 버전
Sublime Text 3 Build 3211 Windows 64 bit
Jupyter Notebook 10.0.18363.1316

소프트웨어 환경

 

 

 

코드 2-1

코드 2-1은 필자가 Sublime Text 에디터로 작성한 파이썬 코드이다. 해당 프로그램은 CMD에서 실행 후 지역과 날짜를 입력하면 조건에 맞는 코로나 환자의 정보를 엑셀파일로 프로그램과 같은 디렉토리 위치에 저장하는 프로그램이다. 데이터 용량이 1000이기 때문에 최근 일주일 정도의 서울시 코로나 환자의 정보를 얻을 수 있다. 다음으로 코드를 세 부분으로 나누어 설명하겠다.

 

 

 

 

 

코드 2-2

코드 2-2를 보면 pandas, requests 라이브러리와 bs4라이브러리의 BeautifulSoup 모듈을 불러온다. Pandas 라이브러리는 파이썬에서 사용하는 데이터분석 라이브러리로, 행과 열로 이루어진 데이터 객체를 만들어 다룰 있게 되며 보다 안정적으로 대용량의 데이터들을 처리하는데 매우 편리한 도구 이다. Requests 파이썬으로 HTTP 호출하는 프로그램을 작성할 가장 많이 사용되는 라이브러리이다. 마지막으로 BeautifulSoup 모듈은 파이썬으로 HTML, XML 파싱해서 원하는 작업을 있는 도구이다.

 

url은 과정 1-6 에서 접속했던 url을 입력하면 된다. html=req.text requests.get으로 받아온 데이터를 문자열 형식으로 바꿔서 html에 저장한다. 그리고 마지막으로 BeautifulSoup 모듈로 html 형태의 데이터를 파싱한다.

 

 

 

 

 

코드 2-3

코드 2-3 의 attr_to_find_list는 데이터 중에서 우리가 원하는 데이터 속성을 나열한 것이다. 다음으로 for문과 if문은 각 속성마다 soup.find_all 함수로 속성 값에 해당하는 모든 데이터를 찾아서 CoronaInfor라는 딕셔너리에 저장한다.

 

 

 

 

 

 

코드 2-4

코드 2-4pd.DataFrame(CoronaInfor)는 딕셔너리에 저장된 데이터들로 DataFrame을 만드는 함수이다. DataFrame 2차원 테이블 테이터 구조를 가지는 자료형이다. DataFrame Pandas 라이브러리의 핵심 자료형으로 데이터 과학, 머신 러닝 등 파이썬으로 데이터를 다룰 때 자주 이용된다. 마지막으로 input으로 지역과 날짜를 입력 받으면 조건에 맞는 서울시 코로나 환자 정보가 입력되고 마지막으로 to_excel 함수로 현재 위치에 ‘(지역)_(날짜)_seoul_corona.xlsx’ 로 저장한다.

 

 

 

 

 

실행 결과 2-1

실행 결과 2-1처럼 프로그램을 실행하고 지역과 날짜를 입력하면 프로그램이 종료된다.

 

 

 

실행 결과 2-2

프로그램과 같은 디렉토리를 보면 엑셀 파일이 생성된다. 그리고 들어가면  실행 결과 2-2처럼 서울시 코로나 환자들의 정보가 출력되는 것을 볼 수 있다.

참고 문헌

3.1  단행본

도서명 저자 출판사
     

단행본

4.2     참조 홈페이지

참조 홈페이지
https://terms.naver.com/entry.nhn?docId=20297&cid=43659&categoryId=43659
https://ko.wikipedia.org/wiki/%EC%98%A4%ED%94%88_API
https://godongyoung.github.io/%EC%BD%94%EB%94%A9cheat%20sheet/2019/06/02/Open-API-%ED%99%9C%EC%9A%A9%EB%B0%A9%EB%B2%95-%EC%A0%95%EB%A6%AC(with-Python).html
https://doorbw.tistory.com/172
https://www.daleseo.com/python-requests/
https://minwook-shin.github.io/python-iterating-searching-modifying-html-using-beautifulsoup/

참조 홈페이지

댓글