항해99/1주차 미니프로젝트

#공공데이터 활용하기(오픈API) + DB구축

paran21 2022. 1. 12. 16:48

공공데이터를 활용하여 프로젝트를 진행하기로 하였다.

 

사서로 일할 때 가장 자주 듣지만 실제 개념 이해가 안됬던 단어가 바로 오픈API다.

일례로, 국립중앙도서관 등 공동목록에서 marc 등 서지정보를 가져올 때라든지

알라딘과 같은 서점이 제공하는 책표지, 목차정보 등을 자관 도서관 홈페이지에 가져올 때 오픈API를 활용한다.

현재 정부기관에서 진행하는 집현전 같은 프로젝트에서도 오픈API를 통해 각 기관들의 공공데이터를 수집하고 있다.

그렇지만 이게 실제로는 어떤 방식으로 작용하는 것인지 이해가 안되었는데, 항해 사전 강의를 들으면서 알 수 있었다.

 

사전 강의에서는 기능 구현/이해를 위해 정제된 데이터를 주지만 실제 공공데이터와 오픈API를 사용하는 것은 쉽지 않았다.

 

공공데이터 포털(https://www.data.go.kr/)의 경우 각종 기관들이 모아놓은 공공데이터를 통합검색할 수 있게 지원하는 역할을 주로 하고, 실제 데이터는 각 기관 홈페이지에 들어가서 확인할 수 있는 경우도 있다.

또한 데이터의 형태에 따라 xml, json등으로 데이터를 바로 다운로드할 수 있는 경우도 있고, 오픈API를 제공하기도 한다.

데이터마다 구조가 달라서 구조에 따라 가져오는 코드도 달라진다.

확장자에 따라서도 방법이 다른 것 같은데, 이 부분 나중에 해당 데이터를 쓸 때 좀 더 찾아봐야겠다.

 

처음에 타켓으로 했던 데이터는 '서울시 책방(서점) 현황정보(https://www.data.go.kr/data/15084328/fileData.do)이다.'

서점의 위치, 주소, 전화번호뿐만 아니라 홈페이지와 SNS정보도 제공해서 활용하기 좋다고 생각했고, 결과적으로 이번 프로젝트에는 일부 데이터만 사용했지만 나중에 더 활용할 수도 있을 것 같다.

 

이 데이터는 서울 열린데이터 광장(https://data.seoul.go.kr/index.do)에서 제공하는데

저녁부터 갑자기 사이트가 안되면서 모든 서울시 오픈API가 열리지 않았다.

당장 프로젝트에 사용할 데이터가 필요해서, 공공데이터 포털에서 찾은 경기도 서점 데이터를 가져왔다.

 

처음에 requests로 불러오는 시도를 했는데 제대로 데이터를 가져오지 못했다.

데이터 구조 파악을 잘 못해서 코드를 제대로 못짠 것 같다.

 

그래서 josn으로 데이터를 다운받아서 mongoDB에 넣고, 거기서 불러오는 걸로 코드를 짰다.

 

 

오픈API는 실시간으로 변동되는 데이터를 반영할 수 있다는 것이 장점이지만, 서울시 사례처럼 연결이 제대로 안될 경우 데이터를 받아올 수 없다.

 

DB로 저장해서 사용하면, 데이터는 추가로 업데이트를 해주어야 하지만 안정적으로 데이터를 안정적으로 받아올 수 있는 것 같다. DB가 변경되더라도 서버에서 경로만 잘 바꿔주면 되서 수정도 쉬웠다.

서점 데이터는 크게 실시간성을 요구하는 데이터가 아니라서 데이터 성격에서도 문제가 없을 것 같다.

 

 

+ 해결못한 과제

- 오픈API 데이터 구조 잘 파악하기, 잘 불러오기 (xml, json / 리스트, 딕셔너리 파악 등등)