URL : https://data.gg.go.kr/
데이터셋 : 경기도 공공배달앱 배달특급 가맹점 [이동하기]
OpenAPI를 사용하기 위한 KEY발급 [KEY발급 방법]
Language : Python
Tool : Anaconda Spyder
Lib : cx_Oracle, requests, json, math, folium
cx_Oracle : Oracle 데이터 베이스와의 연결 및 상호작용을 위한 라이브러리
requests : HTTP 요청을 보내기 위한 라이브러리
json : JSON 데이터를 파싱하고 생성하기 위한 라이브러리
math : 수학 함수들을 제공하는 라이브러리로, 페이지 수를 계산하는데 사용*필자는 Python에 cx_Oracle 설치중에 아래와 같은 에러가 발생해 공유한다.
(ERROR: Failed building wheel for cx_oracle) Python cx_Oracle 설치 에러
API 요청을 보내고, API 응답의 binray_data를 가져오고 데이터를 JSON형식으로 변환한다. 전체 데이터 개수를 기반으로 최대 페이지 수를 계산한다. 한 페이지당 100개 항목을 가져온다.
전체 페이지 수 만큼 반복. 각 페이지에 대해 API 요청을 보내고,
데이터를 받아 JSON 형식으로 파싱한다.
json_data 에서 각 레코드를 돌며 필요한 데이터를 추출한다.
SQL문을 실행하여 데이터베이스에 데이터를 삽입한다.
예외처리를 통해 DB에 삽입 중 오류가 발생하면 롤백하고, 오류 메세지 출력.#3-2 파싱한 데이터를 DB에 삽입한 결과
foulium.Map 을 사용하여 기본 지도를 생성. location 매개변수는 초기 지도의 중심
위치를 설정함. 생성된 지도를 HTML 파일로 저장한다.
사용자로부터 시군을 입력받고, 입력된 시군에 해당하는 가게 정보를 DB에서 가져온다.
쿼리 결과를 순회하며 각 가게의 위치를 지도에 마커로 표시함. 위도와 경도가 유효한지
확인하고, 유효할 경우 folium을 사용하여 해당 위치를 추가한다.
생성된 지도를 HTML 파일로 저장하고, 파일의 경로를 출력하여 사용자에게 알려준다.
DB연결을 닫으며 종료한다.
중간에 어려움이 있었지만, 잘 해결하고, 잘 마무리해서 뿌듯하다.
이전에 학습했던 내용을 복습하고 미니 프로젝트까지 진행해보았다.
즐겁게 공부했지만, 아직 많~~이 부족하다 느낀다. 화이팅~