본문 바로가기

Tips

카카오 API를 이용하여 원하는 정보를 가져오자 :)

API이용하기

카카오 API를 이용하여 정보를 가져오자 : )

카카오 API를 이용하여 원하는 정보들을 가져와 볼 건데요. 제가 예전에 프로젝트를 하면서 API를 파이썬으로 불러오려 했을 때 조금 불편했던 기억이 있어서 이렇게 글을 올립니다.

In [5]:
import json
import requests
In [10]:
def Get_all(addr):
    url = 'https://dapi.kakao.com/v2/local/search/keyword.json?query='+addr
    headers = {"Authorization": "KakaoAK 카카오API}
    result = json.loads(str(requests.get(url,headers=headers).text))
    
 
    return result
In [11]:
Get_all('잠실역')
Out[11]:
{'documents': [{'address_name': '서울 송파구 신천동 8',
   'category_group_code': 'SW8',
   'category_group_name': '지하철역',
   'category_name': '교통,수송 > 지하철,전철 > 수도권2호선',
   'distance': '',
   'id': '21160809',
   'phone': '02-6110-2161',
   'place_name': '잠실역 2호선',
   'place_url': 'http://place.map.kakao.com/21160809',
   'road_address_name': '서울 송파구 올림픽로 지하 265',
   'x': '127.100228759082',
   'y': '37.513312862699'},
  {'address_name': '서울 송파구 신천동 27',
   'category_group_code': 'SW8',
   'category_group_name': '지하철역',
   'category_name': '교통,수송 > 지하철,전철 > 수도권8호선',
   'distance': '',
   'id': '21160730',
   'phone': '02-6311-8141',
   'place_name': '잠실역 8호선',
   'place_url': 'http://place.map.kakao.com/21160730',
   'road_address_name': '',
   'x': '127.103270523629',
   'y': '37.5143121584933'},
  {'address_name': '서울 송파구 신천동 29',
   'category_group_code': 'PK6',
   'category_group_name': '주차장',
   'category_name': '교통,수송 > 교통시설 > 주차장 > 공영주차장',
   'distance': '',
   'id': '27216884',
   'phone': '',
   'place_name': '잠실역공영주차장',
   'place_url': 'http://place.map.kakao.com/27216884',
   'road_address_name': '',
   'x': '127.10442552404928',
   'y': '37.5144093524076'},
  {'address_name': '서울 송파구 신천동 15',
   'category_group_code': 'SW8',
   'category_group_name': '지하철역',
   'category_name': '교통,수송 > 지하철,전철 > 수도권2호선',
   'distance': '',
   'id': '21160584',
   'phone': '02-6110-2151',
   'place_name': '잠실나루역 2호선',
   'place_url': 'http://place.map.kakao.com/21160584',
   'road_address_name': '서울 송파구 오금로 20',
   'x': '127.103808749487',
   'y': '37.5207124124456'},
  {'address_name': '서울 송파구 신천동 3',
   'category_group_code': '',
   'category_group_name': '',
   'category_name': '교통,수송 > 교통시설',
   'distance': '',
   'id': '26458977',
   'phone': '',
   'place_name': '잠실역 지하버스환승센터',
   'place_url': 'http://place.map.kakao.com/26458977',
   'road_address_name': '서울 송파구 올림픽로 지하 265',
   'x': '127.100102057152',
   'y': '37.5132985540838'},
  {'address_name': '서울 송파구 잠실동 21',
   'category_group_code': 'SW8',
   'category_group_name': '지하철역',
   'category_name': '교통,수송 > 지하철,전철 > 수도권2호선',
   'distance': '',
   'id': '21160539',
   'phone': '02-6110-2171',
   'place_name': '잠실새내역 2호선',
   'place_url': 'http://place.map.kakao.com/21160539',
   'road_address_name': '서울 송파구 올림픽로 지하 140',
   'x': '127.086314327913',
   'y': '37.5116263587296'},
  {'address_name': '서울 송파구 신천동 7-28',
   'category_group_code': '',
   'category_group_name': '',
   'category_name': '스포츠,레저 > 자전거,싸이클 > 자전거대여소',
   'distance': '',
   'id': '708243778',
   'phone': '',
   'place_name': '롯데월드타워(잠실역2번출구 쪽) 대여소',
   'place_url': 'http://place.map.kakao.com/708243778',
   'road_address_name': '서울 송파구 올림픽로 293-19',
   'x': '127.100961456391',
   'y': '37.513124829921'},
  {'address_name': '서울 송파구 신천동 3',
   'category_group_code': '',
   'category_group_name': '',
   'category_name': '교통,수송 > 교통시설 > 고속,시외버스정류장',
   'distance': '',
   'id': '26572203',
   'phone': '',
   'place_name': '잠실역(중앙)시외버스정류소',
   'place_url': 'http://place.map.kakao.com/26572203',
   'road_address_name': '',
   'x': '127.09843104430654',
   'y': '37.515590309478156'},
  {'address_name': '서울 송파구 신천동',
   'category_group_code': '',
   'category_group_name': '',
   'category_name': '교통,수송 > 도로시설 > 교차로',
   'distance': '',
   'id': '15140945',
   'phone': '',
   'place_name': '잠실역사거리',
   'place_url': 'http://place.map.kakao.com/15140945',
   'road_address_name': '',
   'x': '127.100106740385',
   'y': '37.5134174826064'},
  {'address_name': '서울 송파구 신천동 15',
   'category_group_code': 'PK6',
   'category_group_name': '주차장',
   'category_name': '교통,수송 > 교통시설 > 주차장 > 공영주차장',
   'distance': '',
   'id': '20563192',
   'phone': '',
   'place_name': '잠실나루역 공영주차장',
   'place_url': 'http://place.map.kakao.com/20563192',
   'road_address_name': '서울 송파구 오금로 20',
   'x': '127.103425089297',
   'y': '37.5214011149548'},
  {'address_name': '서울 송파구 신천동 27',
   'category_group_code': '',
   'category_group_name': '',
   'category_name': '가정,생활 > 상가,아케이드',
   'distance': '',
   'id': '860774194',
   'phone': '',
   'place_name': '잠실역지하상가',
   'place_url': 'http://place.map.kakao.com/860774194',
   'road_address_name': '서울 송파구 올림픽로 지하 265',
   'x': '127.100391641636',
   'y': '37.5133163283882'},
  {'address_name': '서울 송파구 잠실동 31',
   'category_group_code': '',
   'category_group_name': '',
   'category_name': '스포츠,레저 > 자전거,싸이클 > 자전거대여소',
   'distance': '',
   'id': '57630908',
   'phone': '',
   'place_name': '잠실역 6번출구 대여소',
   'place_url': 'http://place.map.kakao.com/57630908',
   'road_address_name': '',
   'x': '127.099030821842',
   'y': '37.5140887362941'},
  {'address_name': '서울 송파구 잠실동 27',
   'category_group_code': '',
   'category_group_name': '',
   'category_name': '교통,수송 > 교통시설 > 고속,시외버스정류장',
   'distance': '',
   'id': '823790731',
   'phone': '',
   'place_name': '잠실역시외버스정류소',
   'place_url': 'http://place.map.kakao.com/823790731',
   'road_address_name': '',
   'x': '127.097217135698',
   'y': '37.512816223709'},
  {'address_name': '서울 송파구 신천동 7-18',
   'category_group_code': '',
   'category_group_name': '',
   'category_name': '스포츠,레저 > 자전거,싸이클 > 자전거대여소',
   'distance': '',
   'id': '1327239809',
   'phone': '',
   'place_name': '잠실역 8번출구 대여소',
   'place_url': 'http://place.map.kakao.com/1327239809',
   'road_address_name': '',
   'x': '127.100737025351',
   'y': '37.5144549029325'},
  {'address_name': '서울 송파구 신천동 15',
   'category_group_code': '',
   'category_group_name': '',
   'category_name': '스포츠,레저 > 자전거,싸이클 > 자전거대여소',
   'distance': '',
   'id': '919785415',
   'phone': '',
   'place_name': '잠실나루역 (2번 출구 쪽) 대여소',
   'place_url': 'http://place.map.kakao.com/919785415',
   'road_address_name': '서울 송파구 오금로 20',
   'x': '127.104202048619',
   'y': '37.5204525773684'}],
 'meta': {'is_end': False,
  'pageable_count': 33,
  'same_name': {'keyword': '잠실역', 'region': [], 'selected_region': ''},
  'total_count': 303}}

먼저 형태는 이러한 형태로 함수를 구성해주시면 되는데요, 위에 처럼 코드를 짜면 검색하는 곳에 대한 모든 정보가 다 불려져 옵니다. 여기서 저는 좌표만을 따로 가져와보겠습니다.

In [12]:
def Get_LatLng(addr):
    url = 'https://dapi.kakao.com/v2/local/search/keyword.json?query='+addr
    headers = {"Authorization": "KakaoAK 카카오API"}
    result = json.loads(str(requests.get(url,headers=headers).text))
    x = float(result['documents'][0]['x'])
    y = float(result['documents'][0]['y'])
 
    return (y,x)
In [14]:
Get_LatLng("종로구")
Out[14]:
(37.5776087830657, 126.976896737645)

이런식으로 위도, 경도값만을 불러올 수 있습니다. 구조가 딕셔너리 안에 딕셔너리 구조로 되어있기 때문에 코드를 구성하여 원하는 값만 불러 올 수가 있습니다. :)

In [ ]:
 

'Tips' 카테고리의 다른 글

확장명 ipynb를 py로 바꿔보자.  (0) 2020.01.08