Python/Basic Data Analysis

[Python]네이버 데이터랩 api 사용해보기

sohyunkimmm 2023. 1. 28. 15:00
728x90

* Naver Developers 사이트

https://developers.naver.com/main/

 

NAVER Developers

네이버 오픈 API들을 활용해 개발자들이 다양한 애플리케이션을 개발할 수 있도록 API 가이드와 SDK를 제공합니다. 제공중인 오픈 API에는 네이버 로그인, 검색, 단축URL, 캡차를 비롯 기계번역, 음

developers.naver.com

 

 

 

1. API 신청

- Naver Developers 홈페이지 - Application - 애플리케이션 등록

 

 

- 이름은 임의로 정하고, 사용 API는 데이터랩(검색어트랜드)데이터랩(쇼핑인사이트) 두가지를 설정했다

 

 

- 환경은 WEB설정으로, URL은 http://localhost로 설정!

 

 

- 내 애플리케이션에 'sohyun1'이 생긴걸 볼 수 있다. 

- 여기서 생긴 Client ID와 Client Secret을 파이썬 코드에 입력해야한다.

 

 

 

2. Python 코드 작성

- 샘플코드를 바탕으로 코드를 작성했다. 

- 먼저, Naver Developers에서 생성한 내 애플리케이션의 ID와 Secret코드를 복사 붙여넣기 했다. 

 

- url은 네이버 데이터랩의 openapi 

- body는 내가 검색하고 싶은 정보에 맞춰서 수정했다. 

- 기간: 2022-12-01 ~ 2023-01-26

- 키워드: '삼성', 'samsung'

- device = 'pc'

- ages = 그룹 1 ~ 5

- gender: 모든 성별 (설정 안하면 모든 성별)

네이버 api 파라미터 정리 (사진 출처: https://outyj.tistory.com/9)

 

- 나머지 코드는 손대지 않았다. 

 

- 결과

: 100을 기준으로 일별 검색수 비율이 나왔다

 

 

* 전체코드 공유

import pandas as pd

import urllib.request

import json

client_id = "zFriq6PpTlaRn1CeJhvJ"

client_secret = "sY7aqQSn9l"

url = "https://openapi.naver.com/v1/datalab/search"

body = "{\

\"startDate\":\"2022-12-01\",\

\"endDate\":\"2023-01-26\",\

\"timeUnit\":\"date\",\

\"keywordGroups\":[{\"groupName\":\"삼성\",\"keywords\":[\"삼성\",\"samsung\"]}],\

\"device\":\"pc\",\

\"ages\":[\"1\",\"2\",\"3\",\"4\",\"5\"]\

}";



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()

response_data = response_body.decode('utf-8')

else:

print("Error Code:" + rescode)



result = json.loads(response_data)



print(result)



date = [a['period'] for a in result['results'][0]['data']]

ratio_data1 = [a['ratio'] for a in result['results'][0]['data']]



pd.DataFrame({'date':date, 'seraching_result':ratio_data1})

 

 

728x90
반응형