단연코 네이버 API를 가장 쉽게 이용할 수 있는 방법

PyNaver네이버 개발자 센터네이버 클라우드 플랫폼에서 제공하는 API를 쉽게 이용할 수 있도록 돕는 파이썬 라이브러리입니다. pip를 이용해 쉽게 설치할 수 있고, 번거로운 웹 스크래핑 스크립트를 작성할 필요가 없습니다.

네이버 개발자 센터에서 제공하는 통합 검색어 트렌드, 쇼핑인사이트 서비스부터 블로그, 뉴스, 책, 백과사전, 영화, 카페글, 지식인, 지역, 웹문서, 이미지, 쇼핑 그리고 전문자료 등의 검색 서비스도 쉽게 이용할 수 있습니다. 이와 같은 키워드 검색 서비스 외에도 단축 URL, 파파고 번역, 한글 인명 로마자 변환 등의 서비스 또한 이용할 수 있습니다.

네이버 클라우드 플랫폼에서 제공하는 지오코딩, 리버스 지오코딩 그리고 길찾기 등의 서비스도 쉽게 이용할 수 있습니다.

단, 위 서비스들을 정상적으로 이용하기 위해서는 먼저 각 플랫폼에서 API 인증 정보(client_id, client_secret)를 발급받아야합니다.


네이버 API 인증 정보 발급받기

  • 네이버 개발자 센터에 접속 후 로그인합니다. PNG

  • Application’ - ‘애플리케이션 등록’ 을 클릭합니다. PNG

  • 애플리케이션 이름을 적고, 사용 API에 아래와 같이 사용할 서비스들을 하나씩 클릭하여 선택합니다. 환경 설정까지 마쳤다면 ‘등록하기’를 클릭합니다. PNG

  • 왼쪽 사이드바의 ‘내 애플리케이션‘에서 위에서 등록한 애플리케이션 이름을 클릭하면, 아래와 같이 애플리케이션 정보가 조회됩니다. (중요) Client IDClient Secret을 복사해둡니다. PNG


네이버 클라우드 플랫폼 API 인증 정보 발급받기

  • 네이버 클라우드 플랫폼에 접속 후 로그인합니다. PNG

  • 콘솔-애플리케이션에 접속하여 ‘Application 등록‘을 클릭합니다. PNG

  • Maps‘에서 사용할 서비스들을 아래와 같이 체크한 뒤 등록을 완료합니다. PNG

  • 다시 콘솔-애플리케이션으로 돌아와 위에서 등록한 App의 ‘인증 정보‘를 클릭하여 (중요) Client IDClient Secret을 복사해둡니다.


PyNaver 설치하기

API 인증 정보를 발급받았다면, 아래와 같이 pip를 통해 PyNaver를 설치합니다.

pip install PyNaver


네이버 개발자 센터 API 이용하기

아래와 같이 네이버 개발자 센터 API 인스턴스 naver를 생성합니다. client_idclient_secret은 위에서 복사한 값을 입력하여 사용합니다.

from PyNaver import Naver

# 애플리케이션 인증 정보
client_id = ""
client_secret = ""

# 네이버 API 인스턴스 생성
naver = Naver(client_id, client_secret)


통합 검색어 트렌드 API

파라미터 관련 상세 정보는 아래 API 레퍼런스 링크를 참조하면 됩니다.

  • API 레퍼런스: https://developers.naver.com/docs/serviceapi/datalab/search/search.md
# 파라미터
startDate = "2022-01-01"
endDate = "2022-08-31"
timeUnit = "date"
keywordGroups = [
    {
        "groupName": "미국",
        "keywords": ["나스닥","NASDAQ","S&P500"]
    },

    {
        "groupName": "한국",
        "keywords": ["코스피","코스닥"]
    },
]

# 실행
df = naver.datalab_search(startDate=startDate,
                          endDate=endDate,
                          timeUnit=timeUnit,
                          keywordGroups=keywordGroups)
df.tail()
날짜 미국 한국
238 2022-08-27 18.57486 3.73850
239 2022-08-28 2.86686 2.25316
240 2022-08-29 11.75978 35.19007
241 2022-08-30 21.22296 24.24702
242 2022-08-31 19.19284 24.18048


쇼핑인사이트 API

파라미터 관련 상세 정보는 아래 API 레퍼런스 링크를 참조하면 됩니다.

  • API 레퍼런스: https://developers.naver.com/docs/serviceapi/datalab/shopping/shopping.md

쇼핑인사이트 API는 총 8가지 종류가 있으나 여기서는 한 가지 서비스만 소개합니다. 나머지 서비스들의 사용 방법도 거의 동일합니다.

# 파라미터
startDate = "2022-01-01"
endDate = "2022-08-30"
timeUnit = "date"
category = [
    {
        "name": "카테고리1",
        "param": ["50000000"],
    },
    {
        "name": "카테고리2",
        "param": ["50000002"],
    },
]

# 실행
df = naver.datalab_shopping_categories(startDate=startDate,
                                       endDate=endDate,
                                       timeUnit=timeUnit,
                                       category=category)
df.tail()
날짜 카테고리1 카테고리2
237 2022-08-26 52.63769 31.84794
238 2022-08-27 59.23958 34.21125
239 2022-08-28 69.51918 37.97973
240 2022-08-29 68.35153 41.28070
241 2022-08-30 70.99945 38.83789


단축 URL API

파라미터 관련 상세 정보는 아래 API 레퍼런스 링크를 참조하면 됩니다.

  • API 레퍼런스: https://developers.naver.com/docs/utils/shortenurl/
# 파라미터
url = "https://wooiljeong.github.io"

# 실행
res = naver.util_shorturl(url)
res
{'result': {'url': 'https://me2.do/FniJlxxK',
  'hash': 'FniJlxxK',
  'orgUrl': 'https://wooiljeong.github.io'},
 'message': 'ok',
 'code': '200'}


파파고 번역 API

파라미터 관련 상세 정보는 아래 API 레퍼런스 링크를 참조하면 됩니다.

  • API 레퍼런스: https://developers.naver.com/docs/papago/papago-nmt-api-reference.md
# 파라미터
source = "ko"
target = "en"
text = "파이썬으로 파파고 번역 API를 호출해봅니다."

# 실행
res = naver.papago_n2mt(source = source, 
                        target = target, 
                        text = text)
res
'Try calling the Papago translation API with Python.'


한글 인명 로마자 변환 API

파라미터 관련 상세 정보는 아래 API 레퍼런스 링크를 참조하면 됩니다.

  • API 레퍼런스: https://developers.naver.com/docs/papago/papago-romanization-api-reference.md
# 파라미터
query = "홍길동"

# 실행
df = naver.krdict_romanization(query=query)
df.head()
name score
0 Hong Gildong 99
1 Hong Kildong 96
2 Hong Gildoung 21
3 Hong Kildoung 20


검색 API

파라미터 관련 상세 정보는 아래 API 레퍼런스 링크를 참조하면 됩니다.

  • API 레퍼런스: https://developers.naver.com/docs/serviceapi/search/news/news.md

검색 API는 블로그, 뉴스, 책, 백과사전, 영화, 카페글, 지식인, 지역, 웹문서, 이미지, 쇼핑 그리고 전문자료로 이루어져있습니다. 여기서는 뉴스 검색 API만 대표로 소개합니다. 나머지 서비스들의 사용 방법도 거의 동일합니다.

# 파라미터
query = "태풍"
display = 5
sort = "sim" # date

# 실행
df = naver.search_news(query=query, display=display, sort=sort)
df.head()
title originallink link description pubDate
0 [<b>태풍</b> 힌남노] 尹대통령 &quot;최고 단계 대응 태세&quot; 지시 https://www.yna.co.kr/view/AKR2022090302000000... https://n.news.naver.com/mnews/article/001/001... 윤석열 대통령은 3일 제11호 <b>태풍</b> &apos;힌남노&apos;와 관련... Sat, 03 Sep 2022 10:20:00 +0900
1 [속보] 윤 대통령 &quot;<b>태풍</b> &apos;힌남노&apos; 최고 ... https://www.hankyung.com/politics/article/2022... https://n.news.naver.com/mnews/article/015/000... 윤석열 대통령은 3일 제11호 <b>태풍</b> &apos;힌남노&apos;와 관련... Sat, 03 Sep 2022 10:19:00 +0900
2 부산시, 제11회 <b>태풍</b> &apos;힌남노&apos; 북상…총력 대응 http://www.newsis.com/view/?id=NISX20220903_00... https://n.news.naver.com/mnews/article/003/001... 기사내용 요약 3일~6일 부산에 직·간접영향권에 들 것으로 예상 부산시는 지난 2일... Sat, 03 Sep 2022 17:44:00 +0900
3 尹대통령, 힌남노 대비 최고 단계 <b>태풍</b> 대응 태세 지시 https://www.news1.kr/articles/4792405 https://n.news.naver.com/mnews/article/421/000... 윤석열 대통령은 3일 제11호 <b>태풍</b> 힌남노의 북상과 관련, 최고 단계의... Sat, 03 Sep 2022 10:05:00 +0900
4 북상하는 <b>태풍</b> &apos;힌남노&apos;…제주 · 남부지역 강한 비 https://news.sbs.co.kr/news/endPage.do?news_id... https://n.news.naver.com/mnews/article/055/000... &apos;역대급 세기&apos;의 제11호 <b>태풍</b> &apos;힌남노&a... Sat, 03 Sep 2022 10:26:00 +0900


네이버 클라우드 플랫폼 API 이용하기

아래와 같이 네이버 클라우드 플랫폼 API 인스턴스 ncp를 생성합니다. client_idclient_secret은 위에서 복사한 값을 입력하여 사용합니다.

from PyNaver import NaverCloudPlatform

# 애플리케이션 인증 정보
client_id = ""
client_secret = ""

# 네이버 클라우드 플랫폼 API 인스턴스 생성
ncp = NaverCloudPlatform(client_id, client_secret)


지오코딩 API

파라미터 관련 상세 정보는 아래 API 레퍼런스 링크를 참조하면 됩니다.

  • API 레퍼런스: https://api.ncloud-docs.com/docs/ai-naver-mapsgeocoding
# 주소
query = "서초동 1303-22"

# 실행
res = ncp.geocoding(query)
res
{'status': 'OK',
 'meta': {'totalCount': 1, 'page': 1, 'count': 1},
 'addresses': [{'roadAddress': '서울특별시 서초구 강남대로 465 교보생명보험(주) 서초사옥',
   'jibunAddress': '서울특별시 서초구 서초동 1303-22 교보생명보험(주) 서초사옥',
   'englishAddress': '465, Gangnam-daero, Seocho-gu, Seoul, Republic of Korea',
   'addressElements': [{'types': ['SIDO'],
     'longName': '서울특별시',
     'shortName': '서울특별시',
     'code': ''},
    {'types': ['SIGUGUN'], 'longName': '서초구', 'shortName': '서초구', 'code': ''},
    {'types': ['DONGMYUN'], 'longName': '서초동', 'shortName': '서초동', 'code': ''},
    {'types': ['RI'], 'longName': '', 'shortName': '', 'code': ''},
    {'types': ['ROAD_NAME'],
     'longName': '강남대로',
     'shortName': '강남대로',
     'code': ''},
    {'types': ['BUILDING_NUMBER'],
     'longName': '465',
     'shortName': '465',
     'code': ''},
    {'types': ['BUILDING_NAME'],
     'longName': '교보생명보험(주) 서초사옥',
     'shortName': '교보생명보험(주) 서초사옥',
     'code': ''},
    {'types': ['LAND_NUMBER'],
     'longName': '1303-22',
     'shortName': '1303-22',
     'code': ''},
    {'types': ['POSTAL_CODE'],
     'longName': '06611',
     'shortName': '06611',
     'code': ''}],
   'x': '127.0240825',
   'y': '37.5037844',
   'distance': 0.0}],
 'errorMessage': ''}


리버스 지오코딩 API

파라미터 관련 상세 정보는 아래 API 레퍼런스 링크를 참조하면 됩니다.

  • API 레퍼런스: https://api.ncloud-docs.com/docs/ai-naver-mapsreversegeocoding
# 경도, 위도
lon, lat = 127.0240825, 37.5037844

# 실행
res = ncp.reverse_geocoding(lon, lat)
res
{'status': {'code': 0, 'name': 'ok', 'message': 'done'},
 'results': [{'name': 'addr',
   'code': {'id': '1165010800', 'type': 'L', 'mappingId': '09650108'},
   'region': {'area0': {'name': 'kr',
     'coords': {'center': {'crs': '', 'x': 0.0, 'y': 0.0}}},
    'area1': {'name': '서울특별시',
     'coords': {'center': {'crs': 'EPSG:4326',
       'x': 126.9783882,
       'y': 37.5666103}},
     'alias': '서울'},
    'area2': {'name': '서초구',
     'coords': {'center': {'crs': 'EPSG:4326',
       'x': 127.032598,
       'y': 37.483569}}},
    'area3': {'name': '서초동',
     'coords': {'center': {'crs': 'EPSG:4326',
       'x': 127.0195082,
       'y': 37.4901186}}},
    'area4': {'name': '',
     'coords': {'center': {'crs': '', 'x': 0.0, 'y': 0.0}}}},
   'land': {'type': '1',
    'number1': '1303',
    'number2': '22',
    'addition0': {'type': '', 'value': ''},
    'addition1': {'type': '', 'value': ''},
    'addition2': {'type': '', 'value': ''},
    'addition3': {'type': '', 'value': ''},
    'addition4': {'type': '', 'value': ''},
    'coords': {'center': {'crs': '', 'x': 0.0, 'y': 0.0}}}}]}


Directions5 API

파라미터 관련 상세 정보는 아래 API 레퍼런스 링크를 참조하면 됩니다.

  • API 레퍼런스: https://api.ncloud-docs.com/docs/ai-naver-mapsdirections
# 파라미터
start = "127.1115061,37.3864539"
goal = "127.01953476,37.5160802"

# 실행
res = ncp.directions5(start=start, goal=goal)
res
{'code': 0,
 'message': '길찾기를 성공하였습니다.',
 'currentDateTime': '2022-09-04T01:50:27',
 'route': {'traoptimal': [{'summary': {'start': {'location': [127.111505,
       37.3864536]},
     'goal': {'location': [127.0195345, 37.51608], 'dir': 2},
     'distance': 19972,
     'duration': 1143383,
     'etaServiceType': 1,
     'departureTime': '2022-09-04T01:50:27',
     'bbox': [[127.0137745, 37.3863436], [127.1130969, 37.5228656]],
     'tollFare': 1000,
     'taxiFare': 22790,
     'fuelPrice': 2484},
     ...


Directions15 API

파라미터 관련 상세 정보는 아래 API 레퍼런스 링크를 참조하면 됩니다.

  • API 레퍼런스: https://api.ncloud-docs.com/docs/ai-naver-mapsdirections15
# 파라미터
start = "127.1115061,37.3864539"
goal = "127.01953476,37.5160802"

# 실행
res = ncp.directions15(start=start, goal=goal)
res
{'code': 0,
 'message': '길찾기를 성공하였습니다.',
 'currentDateTime': '2022-09-04T01:50:32',
 'route': {'traoptimal': [{'summary': {'start': {'location': [127.111505,
       37.3864536]},
     'goal': {'location': [127.0195345, 37.51608], 'dir': 2},
     'distance': 19972,
     'duration': 1143919,
     'etaServiceType': 1,
     'departureTime': '2022-09-04T01:50:32',
     'bbox': [[127.0137745, 37.3863436], [127.1130969, 37.5228656]],
     'tollFare': 1000,
     'taxiFare': 22790,
     'fuelPrice': 2484},
     ...

태그:

카테고리:

업데이트:

댓글남기기