세계에는 굉장히 다양한 웹 서비스가 있습니다. 날씨 정보, 상품 데이터, 주가, 환율 등의 다양한 정보를 웹에서 찾을 수 있습니다. 이러한 웹 사이트 중에는 웹 API를 제공하는 곳이 있습니다.

 

웹 API는 어떤 사이트가 가지고 있는 기능을 외부에서도 쉽게 사용할 수 있게 공개한 것을 의미합니다. 원래 API(Application Programming Interface)는 어떤 프로그램 기능을 외부의 프로그램에서 호출해서 사용할 수 있게 만든 것을 의미합니다. 간단하게 서로 다른 프로그램이 기능을 공유할 수 있게 절차와 규약을 정의한 것 입니다.

 

웹 API도 비슷합니다. 이랍ㄴ적으로 HTTP 통신을 사용하는데, 클라이언트 프로그램은 API를 제공하는 서버에 HTTP 요청을 보냅니다. 그러면 서버가 이러한 요청을 기반으로 XML, JSON 형식 등으로 응답합니다.

 

대부분의 클라이언트 프로그래밍 언어는 XML과 JSON 형식의 데이터를 쉽게 처리할 수 있습니다. 따라서 굉장히 쉽게 원하는 형태로 사용할 수 있습니다.

 

하지만 왜? 사이트에서는 API를 제공을 해주는 것일까요? 

 

물론 개발자와 제공자의 공동 이익을 목적으로 선의를 가지고 API를 제공하는 서비스도 있습니다.

 

예를 들면 게임 League of Legend의 경우 과연 전적검색을 위한 자료는 어디서 가져오는 것일까요?

 

전적 검색을 제공하는 사이트에서는 Riot에서 제공하는 API를 제공 받아 게임 유저들에게 필요한 정보만을 추출하고 정리해서 보여주는 것입니다.

 

그 밖에도 그 정보를 바탕으로 승률, 픽률, 상대 상성등도 상황에 맞는 데이터를 추출하여 분석하고 그것을 유저들에게 보여주는 것입니다.

 

게임 말고도 옥션이나 지마켓, 11번가, 아마존(amazon)등의 사이트 역시 상품 검색 API를 제공하는데 이를 제공함으로써 개발자들이 관련된 어플리케이션을 만들면 판매 기회를 조금이라도 올릴 수 있게 됩니다.

 

또 다른 이유는 API를 제공하는 웹 사이트의 경우 좋은 정보를 가지고 있다는 의미가 될 것이고, API 서비스를 제공하지 않는 경우 크롤링의 표적이 되기 때문입니다.

 

만약 크롤링을 많은 사람들이 하게 된다면 서버에 부담이 될 것이기 때문에 미리 웹 API서비스를 제공해 주기도 합니다.

 

방금까지는 장점에 대해서만 말씀드렸습니다. 하지만 웹 API도 단점은 분명히 있는데요, 첫 번째는 웹 API 제공자의 사정으로 인해 웹 API가 없어지거나 사양 변경이 일어날 수 있다는 것입니다. 애플리케이션을 개발할 때는 이를 반드시 고려해야 합니다. 편리하게 사용하던 웹 API가 어느 날 갑자기 사라지면 애플리케이션이 동작하지 않기 때문입니다. 물론 이는 웹 사이트를 직접적으로 스크레이핑할 때도 발생할 수 있는 문제입니다.

 

 

 

'Basic' 카테고리의 다른 글

HTTP, 쿠키, 쎄션이란?  (0) 2021.01.29

오늘은 전 세계의 모든 날씨 정보 등을 가지고 있는 OpenWeatherMap을 사용해서 서울의 날씨정보에 대해 알아보려고 합니다.

 

일단 앞서 OpenWeatherMap을 사용하려면 개발자 등록을 하고 API키를 발급받아야 합니다.

 

http://openweathermap.org/ 에 가셔서 가입을 누르시면 어디에 사용할 지 물어보는데 적당한 답변을 주시고 OK버튼을 눌러주세요 그리고 오른쪽 상단에 본인 아이디를 누르시면 여러가지 메뉴가 나오는데 거기서 [My API Keys]라는 탭에서 API 키를 확인하실 수 있습니다.

 

제 API key는 개인정보 보호를 위해 지웠지만 다음과 같이 key를 얻을 수 있고, 이 key를 사용하여 데이터를 가져올 수 있습니다.

 

OpenWeatherMap은 기본적으로 유료 API이지만 현재 날씨, 5일까지의 날씨는 무료로 사용할 수 있습니다. 다만 무료로 사용시 1분에 60번만 호출할 수 있습니다. 실제 애플리케이션에 적용하는 것이 아닌 연습용으로는 충분할 것입니다.

 

 

 

 

 

 

1. request, json을 import 한 후, API키를 지정 후 requests를 활용하여 데이터 받아오기

 

그리고 url을 지정을 해 주는데, 저는 일단 한국에 있는 서울의 날씨 정보만 가져올 것이기 때문에 url에 직접 입력을 했습니다. url = 'http://api.openweathermap.org/data/2.5/weather?q=(도시,나라)&APPID=(openweathermap으로부터 발급받은 key)' 이런식으로 입력을 해줍니다.  

 

k2c는 화씨를 섭씨로 바꾸기 위한 간단한 수식이며, requests.get(url)을 이용하여 데이터를 받아옵니다. 결과가 200이 나왔다는 것은 정상적으로 데이터를 받아왔다는 것을 의미합니다.

 

2. jason을 이용한 결과값

 

받은 데이터는 풀어주면 다음과 같은 결과를 볼 수 있습니다.

 

데이터는 기본적으로 딕셔너리와 리스트로 되어있기 때문에 이를 잘 활용하면 원하는 데이터를 보기 좋게 추출할 수 있습니다.

 

3. 원하는 데이터 정리

 

data의 내용을 보면 coord는 위도 및 경도, weather 키 값은 id, 날씨, 설명, 아이콘 그리고 main에는 온도, 체감온도, 최저 및 최고온도, 압력, 습도 등등 그 밖에의 여러 정보들을 확인하실 수 있습니다.

 

저는 그 중 도시명, 날씨, 최저 및 최고 기온, 습도, 기압, 풍향, 풍속등만 추출하였고, 다음과 같은 결과값을 얻었습니다.

'AI > 데이터 수집' 카테고리의 다른 글

Selenium으로 스크레이핑하는 방법  (0) 2021.02.02
Selenium을 활용한 로그인  (0) 2021.02.02
requests 모듈의 메서드  (0) 2021.01.31
requests를 사용하여 로그인  (0) 2021.01.31
상대경로 및 절대경로  (0) 2021.01.26

+ Recent posts