일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
- 강화학습
- 리액트네이티브
- Ros
- 데이터분석
- 정치인
- selenium
- 클론코딩
- TeachagleMachine
- 크롤링
- 조코딩
- 앱개발
- python
- React
- expo
- clone coding
- 사이드프로젝트
- ReactNative
- 카트폴
- Instagrame clone
- 머신러닝
- pandas
- App
- 딥러닝
- coding
- FirebaseV9
- kaggle
- 전국국밥
- redux
- JavaScript
- 강화학습 기초
- Today
- Total
qcoding
3) 카카오 Api를 활용한 geocode로 위도/경도 찾기 본문
1) 필요한 기능
2022.01.10 - [[사이드 프로젝트]App개발 - 전국 국밥 찾기] - 2) Python + Selenium + Beautiful Soup 통한 음식점 정보 웹크롤링
2) Python + Selenium + Beautiful Soup 통한 음식점 정보 웹크롤링
- 크롤링 사이트 확인 -> 음식점 정보를 얻기 위해서 여러 웹사이트를 통해서 크롤링이 가능하지만 평소 사용하는 DiningCode를 통해 음식점 정보를 얻기로 결정하였다. 검색어를 통해 지역별로 검
qcoding.tistory.com
-> 앞에서 구한 프로젝트에서 크롤링을 하고 나면 아래와 같은 형식의 엑셀파일이 생성된다. 이 때 음식점의 주소를 얻게 되는 데, 지도상에 표시를 하려면 위도 / 경도의 지리적인 정보가 필요하다. 구글지도에서 검색해서 노가다로 얻을 수 있고, 구글 API, 카카오 API, 네이버 API 등을 사용하는 여러 방법이 있다.
노가다는 음식정보가 500개나 되어서 너무 오래걸릴 듯하고, 이번 글에서는 카카오 API를 사용하였다.
구글도 사용할 수 있지만 API 조건등이 변경되어 무료로 사용하기전에 결제정보를 등록해야 되서 최종적으로는 카카오로 선택하였다.
2) 코드구현 및 API 발행하기
-> 카카오 API를 사용하기 위해서 구글링을 하여 아래의 좋은 사이트를 확인하였다.
여기서 설명이 아주 잘되어 있어서 이대로 따라하게 되면 API 키를 제공받게 되고 아래의 코드를 통해 지도정보를 위도와 경도로 받을 수 있다.
여기서 좀 헷갈렸던 부분이 API넣는 부분인데 이는 아래와 같이 진행하면 된다.
# header에 넣는 API KEY값인데 이는 KakaoAK + REST API키 형태로 넣어 주어야한다.
# "KakaoAK DFDFDFDFKNSDFLSNDLKFSNDFL" 의 형태가 들어가야 한다.
headers = {
"Authorization": "API KEY값 "}
파이썬을 활용한 카카오 api로 위경도 구하기
특정 주소를 입력하면 위/경도를 반환하는 코드가 필요했고, 두 가지 방법을 찾았다.
john-analyst.medium.com
import requests
import json
addr = "서울 마포구 모래내로1길 20"
def getLatLng(addr):
url = 'https://dapi.kakao.com/v2/local/search/address.json?query=' + addr
headers = {
"Authorization": "KakaoAK API "}
# result에 json형식의 주소와 위도경도 내용들이 출력된다.
result = json.loads(str(requests.get(url, headers=headers).text))
status_code = requests.get(url, headers=headers).status_code
try:
match_first = result['documents'][0]['address']
lon = match_first['x']
lat = match_first['y']
return lat, lon
except IndexError: # match값이 없을때
return 0,0
except TypeError: # match값이 2개이상일때
return 2,2
lat, lon = getLatLng(addr_jeju)
print(f'위도 : {lat}, 경도 :{lon}')
위의 코드를 이전에 크롤링 후 자동으로 주소를 API로 보내서 위도/경도를 받도록 작성하였다.
def getLatLng(addr):
url = 'https://dapi.kakao.com/v2/local/search/address.json?query=' + addr
headers = {
"Authorization": "KakaoAK API "}
# result에 json형식의 주소와 위도경도 내용들이 출력된다.
result = json.loads(str(requests.get(url, headers=headers).text))
status_code = requests.get(url, headers=headers).status_code
try:
match_first = result['documents'][0]['address']
lon = match_first['x']
lat = match_first['y']
return lat, lon
except IndexError: # match값이 없을때
return 0,0
except TypeError: # match값이 2개이상일때
return 2,2
// 위에서 구한 loc_address를 위의 함수에다가 넣으면 위도와 경도가 나오게 되고 이를 정리하여
// 엑셀에 저장한다.
lat, lon = getLatLng(loc_address)
위와 같이 진행하면 아래와 같은 엑셀파일을 얻을 수 있다.
( * 해당엑셀을 만드는 전체 코드는 이전 글에서 확인가능합니다)
'[사이드 프로젝트]App개발 - 전국 국밥 찾기' 카테고리의 다른 글
6) [사이드 프로젝트]App개발-전국국밥찾기 -> Drawer Navigator (0) | 2022.02.06 |
---|---|
5) ReactNative를 통한 App개발 진행 상황 (0) | 2022.01.15 |
4) Excel 파일로 JSON 형태 변경 및 Firebase 데이터 저장 (0) | 2022.01.14 |
2) Python + Selenium + Beautiful Soup 통한 음식점 정보 웹크롤링 (2) | 2022.01.10 |
1) 프로젝트 소개 및 개발 계획 (0) | 2022.01.10 |