1 Open API란?
1.1 Open API 개념
Open API(Open Application Programming Interface)란 누구나 사용할 수 있도록 공개된 API를 말하며 인터넷 이용자가 일방적으로 웹 검색 결과 및 사용자인터페이스(UI) 등을 제공받는 데 그치지 않고 직접 응용 프로그램과 서비스를 개발할 수 있도록 공개된 API를 말한다. 지도 서비스 및 다양한 서비스에서 시도되고 있으며 누구나 접근하여 사용할 수 있다는 장점이 있다.
하지만 공개된 Open API 일지라도 데이터 사용 용량에 따라 비용을 지불해야 하거나 사용 횟수에 제한이 있는 경우가 있고 완전히 무료일지라도 사용자가 회원가입을 통한 신원확인 후 서비스제공자로부터 인증 키를 별도로 발급받아 오픈
API를 사용토록 장려함으로써 무분별한 데이터 남용을 막는다.
그림 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 이용 신청하는 법
필자는 서울 열린데이터 광장 포털에서 서울시의 코로나 환자들의 정보를 제공하는 Open API를 이용하겠다. Open API를 이용하기 위해서는 과정 1-1처럼 포털에 접속 후 회원가입을 한 뒤 인증키를 받아야 사용할 수 있다.
회원가입을 완료한 뒤 과정 1-2에서 서울시 코로나19 확진자 현황이라고 검색한다.
서울시 코로나19 확진자 현황으로 들어왔으면 아래에 Open API에서 인증키 신청을 한다.
신청을 하면 인증키를 받을 수 있다.
다시 과정 1-3 페이지의 아래로 가면 과정 1-5처럼 샘플 URL이 있다. 샘플 URL 중간에 아까 받은 인증키를 삽입 후 브라우저 URL 폼에 검색하면 서울시 코로나 환자의 데이터를 실시간으로 받을 수 있다.
2 파이썬을 활용한 Open API 사용법
2.1 파이썬을 활용한 Open API 사용법
프로그램명 | 버전 |
Sublime Text 3 | Build 3211 Windows 64 bit |
Jupyter Notebook | 10.0.18363.1316 |
표 소프트웨어 환경
코드 2-1은 필자가 Sublime Text 에디터로 작성한 파이썬 코드이다. 해당 프로그램은 CMD에서 실행 후 지역과 날짜를 입력하면 조건에 맞는 코로나 환자의 정보를 엑셀파일로 프로그램과 같은 디렉토리 위치에 저장하는 프로그램이다. 데이터 용량이 1000이기 때문에 최근 일주일 정도의 서울시 코로나 환자의 정보를 얻을 수 있다. 다음으로 코드를 세 부분으로 나누어 설명하겠다.
코드 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 의 attr_to_find_list는 데이터 중에서 우리가 원하는 데이터 속성을 나열한 것이다. 다음으로 for문과 if문은 각 속성마다 soup.find_all 함수로 속성 값에 해당하는 모든 데이터를 찾아서 CoronaInfor라는 딕셔너리에 저장한다.
코드 2-4의 pd.DataFrame(CoronaInfor)는 딕셔너리에 저장된 데이터들로 DataFrame을 만드는 함수이다. DataFrame은 2차원 테이블 테이터 구조를 가지는 자료형이다. DataFrame은 Pandas 라이브러리의 핵심 자료형으로 데이터 과학, 머신 러닝 등 파이썬으로 데이터를 다룰 때 자주 이용된다. 마지막으로 input으로 지역과 날짜를 입력 받으면 조건에 맞는 서울시 코로나 환자 정보가 입력되고 마지막으로 to_excel 함수로 현재 위치에 ‘(지역)_(날짜)_seoul_corona.xlsx’ 로 저장한다.
실행 결과 2-1처럼 프로그램을 실행하고 지역과 날짜를 입력하면 프로그램이 종료된다.
프로그램과 같은 디렉토리를 보면 엑셀 파일이 생성된다. 그리고 들어가면 실행 결과 2-2처럼 서울시 코로나 환자들의 정보가 출력되는 것을 볼 수 있다.
3 참고 문헌
3.1 단행본
도서명 | 저자 | 출판사 |
표 단행본
4.2 참조 홈페이지
표 참조 홈페이지
'보안프로젝트' 카테고리의 다른 글
[보안프로젝트] 쇼핑몰 대상 XSS 취약점 진단 및 대응방안 수립 (0) | 2021.08.09 |
---|---|
[보안프로젝트] 쇼핑몰 대상 인증처리 미흡 취약점 진단 및 대응방안 수립 (0) | 2021.08.09 |
[보안프로젝트] 도커 환경을 이용한 테스트 환경 서비스 구축 그리고 로그, 이미지 관리 방법 (0) | 2021.08.09 |
[보안프로젝트] 시나리오 기반 모의해킹 프로젝트 (3) | 2021.07.13 |
[보안프로젝트] Nmap NSE를 이용한 취약점 테스트 (0) | 2021.05.16 |
댓글