working_helen

[데이터 수집] API의 개념 / XML 형태 처리 본문

TAVE/뿌스팅 project

[데이터 수집] API의 개념 / XML 형태 처리

HaeWon_Seo 2023. 7. 4. 14:06

 데이터 수집 단계에서 학습한 내용 중 첫번째로 API의 개념과 API 데이터 처리 방법에 대해 공부해본다.

1. API의 개념

1) API

2) API의 기능

3) open API

4) API 제공 데이터의 형태

 

2. XML

1) XML(Extensible Markup Language)

2) 폐업 가게 데이터 API

3) (참고)위도/경도 전환 API


 

1. API의 개념

1) API(application programming interface)

[위키피디아에서 정의하는 API의 개념]
API(application programming interface 애플리케이션 프로그래밍 인터페이스, 응용 프로그램 프로그래밍 인터페이스)는 컴퓨터나 컴퓨터 프로그램 사이의 연결이다. 일종의 소프트웨어 인터페이스이며 다른 종류의 소프트웨어에 서비스를 제공한다. API는 컴퓨터나 소프트웨어를 서로 연결한다.

 API는 서로 다른 소프트웨어가 소통하고 상호작용할 수 있도록 요청, 전달, 처리하는 인터페이스이다.

즉 소프트웨어를 기반으로 한 각종 애플리케이션, 프로그램, 기기 간 데이터 혹은 명령 전달이 원할히 이루어질 수 있도록 중간 다리 역할을 해주는 연결 통로라고 할 수 있다.

 

 API로 빈번히 비유되는 예시가 바로 식당의 종업원이다. 식당에서 손님은 주문을 하고 음식을 기다리는 역할, 요리사는 들어온 주문을 받고 그에 맞춰 음식을 만드는 역할이다. 그 사이에서 종업원은 손님에게 가능한 주문의 목록을 제시하고, 손님의 주문을 요리사에게 전달하며, 요리사가 만든 음식을 손님에게 전달하는 중간 매개자 역할을 한다. 이에 비유하자면 API는 손님 소프트웨어와 요리사 소프트웨어 사이에서 종업원 역할을 하는 인터페이스다. 손님 소프트웨어가 할 수 있는 명령 목록을 보여주고, 손님 소프트웨어의 명령을 받아 이를 요리사 소프트웨어에게 전달한다. 그리고 요리사 소프트웨어가 제시하는 명령에 대한 결과물을 다시 손님 소프트웨어에게 전달한다.

 

 또 다른 비유로 자판기를 들 수 있다. 다양한 상품이 있는 자판기가 있을 때, 사용자는 자판기에 원하는 상품 요청한다. 자판기는 요청에 해당하는 데이터를 서버에서 얻고, 이를 사용자에게 전달해준다. 즉 사람이라는 소프트웨어와 자판기 상품이라는 데이터에 사이에서 API라는 자판기 기계가 소프트웨어의 명령을 인식하여 그에 해당하는 데이터 상품을 제공하는 것이다.

 

 

2) API의 기능

 이러한 중간자로써 API가 수행하는 역할은 아래와 같다.

  • 접속의 표준화 : API는 모든 접속을 표준화하기 때문에 디바이스/운영체제가 다른 소프트웨어 간 상호작용도 가능하다. 이에 따라 소프트웨어를 기반으로 하는 각종 애플리케이션 및 프로그램 간 데이터 소통이 원활하도록 도와준다.
  • 접근의 제한 : 허용된 소프트웨어에 대해서만 서버와 데이터베이스에 대한 접근을 허용해주는 출입구 역학을 한다. 사용자마다 액세스 허용범위를 달리하여 공개 데이터의 조회 및 사용 영역을 조절할 수도 있다. 인증받은 사용자만이 해당 범위의 데이터에 대한 접근 권한을 가질 수 있다.

 

 

3) open API

 API 중에서도 누구나 접근할 수 있도록 공개된 API를 open API라고 한다. 대표적으로 공공데이터 포털의 경우 open API를 이용해 누구나 공공 데이터를 활용할 수 있도록 개방하고 있다. open API를 통해 데이터베이스에 접근하여 얻은 데이트를 기반으로 우리는 새로운 서비스나 애플리케이션, 플랫폼, 프로그램을 개발할 수 있다.

 

 

4) API 제공 데이터의 형태

 API에서 제공하는 데이터 형태는 크게 JSON와 XML이 있다. 사용자가 API에서 데이터를 얻고자 한다면 이 두가지 데이터 형태에 대하여 데이터를 불러오고 처리하는 방식을 알아야한다. TAVE 프로젝트에서는 폐업 가게 데이터 수집과 위도/경도 전환을 위해 open API를 활용했으며, 폐업 가게 데이터의 XML 형태, 위도/경도 데이터의 경우 JSON 형태였다.

 

 

 

이번 포스트에서는 XML 형태 데이터에 대하여 공부해보고자 한다.

2. XML

1) XML(Extensible Markup Language)

 HTML과 매우 비슷한 형태의 마크업 언어이다. 여기서 마크업 언어란 태그를 이용해 문서나 데이터의 구조를 명기하는 언어를 의미한다. HTML에서는 태그를 이용해 내용이 어떻게 사용자 화면에 표시될 것인지 명기한다면, XML의 경우 데이터베이스에서 데이터가 어떤 구조와 배치로 저장될 것인지 정의하는 역할을 한다.

 

 아래와 같이 태그 안에 데이터베이스 구조 항목을 넣고, 태그와 태그 사이에 데이터필드 값을 넣는 방식으로 데이터필드의 특정 항목에 해당하는 값을 정의한다. 

<항목> 데이터필드 값 </항목>

 HTML에서 태그를 활용해 데이터를 크롤링하는 것처럼, XML에서도 태그를 활용해 필요한 데이터를 추출할 수 있다. 특히 python의 경우 pandas의 read_xml( ) 함수를 활용하면 <항목>의 태그를 이용해 데이터필드 값의 데이터를 손쉽게 Dataframe 형태로 변환하여 저장할 수 있다.

 

 

 

2) 폐업 가게 데이터 API

 폐업 가게 데이터를 얻기 위하여 식품의약품안전처에서 제공하는 ‘식품판매업 폐업정보’ open API를 활용했다.

https://www.foodsafetykorea.go.kr/api/newDatasetDetail.do

 

데이터활용서비스

 

www.foodsafetykorea.go.kr

[데이터 불러오기 코드]  /  [XML 데이터 형태 예시]

urls = 필요한 open API url lis

#각 url마다 데이터를 불러와 df 형태로 변환한 후 저장하는 list
dataframes = []

for url in urls:
    response = requests.get(url)
    content = response.text
    df = pd.read_xml(content, xpath='.//row')
    dataframes.append(df)

 

 

 

 

3) (참고)위도/경도 전환 API

 폐업 가게 데이터의 도로명 주소를 위도/경도로 전환하기 위해 구글 Geocoding API를 활용했다. Geocoding이란 사람이 사용하는 일반 주소를 위도/경도의 지리적 좌표 형태로 변환하는 과정을 의미한다. 구글 Geocoding API는 구글 지도상의 데이터를 기반으로 입력된 주소를 위도/경도 데이터로 변환하여 제공해주는 API라고 할 수 있다.

 

 

 

 

 

 

 

Reference

[API 설명]

https://ko.wikipedia.org/wiki/API

https://dpectrum.app/blog/67

https://blog.wishket.com/api%EB%9E%80-%EC%89%BD%EA%B2%8C-%EC%84%A4%EB%AA%85-%EA%B7%B8%EB%A6%B0%ED%81%B4%EB%9D%BC%EC%9D%B4%EC%96%B8%ED%8A%B8/

 

[api 데이터 형식 설명]

https://blog.jgtradeplus.com/3%EB%8D%B0%EC%9D%B4%ED%84%B0%ED%8F%AC%EB%A7%B7-xml%EA%B3%BC-json/

https://velog.io/@garam0410/Java-OPEN-API-%ED%8C%8C%EC%8B%B1%ED%95%98%EA%B8%B0-XML

https://m.blog.naver.com/PostView.naver?blogId=seodaewoo&logNo=222480097431&proxyReferer=