끄적거림

[API]네이버데이터랩 api로 데이터 가져오기 in Python 본문

Python

[API]네이버데이터랩 api로 데이터 가져오기 in Python

Signing 2020. 2. 19. 22:11
728x90
반응형

지난 게시물(2020/02/18 - [Python] - [API]기상청 api로 데이터 가져오기 in Python)에서 API의 대략적인 개념과 Python에서 기상공공데이터 API를 활용하여 내가 원하는 데이터를 가져와보았다.

 

이번에는 네이버데이터랩에서 제공하는 데이터인 통합검색어트랜드 데이터를 수집해보려한다. 다행히(?) 네이버데이터랩에서는 각 언어별로 친절한 가이드를 제공한다.

https://developers.naver.com/docs/datalab/search/

 

통합 검색어 트렌드 API 적용 가이드

통합 검색어 트렌드 API는 '네이버 데이터랩'의 '검색어 트렌드'를 API로 실행할 수 있게하는 RESTful API입니다.

developers.naver.com

본 가이드를 따라가며 데이터 수집 API를 개발해보자.

 

 

 

01. API 신청하기

역시나 네이버데이터랩도 사전에 API를 미리 신청해야한다. 신청하고 사용자key를 받아와야하기 때문이다.

아래 주소로 들어가면 신청할 수 있다. 이때, 네이버 계정은 갖고 있어야 신청할 수 있다.(단, 단체나 기업의 경우 단체 계정으로 가입하여 진행하는 것이 좋다.)

https://developers.naver.com/apps/#/register?defaultScope=datalab

 

애플리케이션 - NAVER Developers

 

developers.naver.com

위의 URL로 접속하면 

 

 

import os
import sys
import urllib.request
import pandas as pd


client_id = "YOUR_CLIENT_ID"
client_secret = "YOUR_CLIENT_SECRET"

url = "https://openapi.naver.com/v1/datalab/search";
body2 = {
    'startDate' : '2017-01-01',
    'endDate' : '2017-04-30',
    'timeUnit' : 'date',        # input : [date, week, month]
    'keywordGroups' : [         #
        {
            'groupName': '한글',
            'keywords': ['한글', 'korean']
        },{
            'groupName': '영어',
            'keywords': ['영어', 'english']
        }
    ],
    'device' : 'pc',
    'ages' : ['1','2','3','4','5','6','7','8','9','10','11'],
    'gender' : ['f', 'm']
}

request = urllib.request.Request(url)

request.add_header("X-Naver-Client-Id",client_id)
request.add_header("X-Naver-Client-Secret",client_secret)
request.add_header("Content-Type","application/json")
response = urllib.request.urlopen(request, data=body.encode("utf-8"))

rescode = response.getcode()
if(rescode==200):
    response_body = response.read()
    print(response_body.decode('utf-8'))
else:
    print("Error Code:" + rescode)

data = json.loads(response_body)


tmp = pd.DataFrame(data['results'])
print(tmp)

res = data['results'][0]['data']
pd.DataFrame(res)
728x90
반응형
Comments