끄적거림

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

Python

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

Signing 2020. 3. 2. 09:42
728x90
반응형

지난번 시간에는 네이버데이터랩 검색트랜드 API를 이용하여 데이터를 가져와보았다.

 

이번엔 "쇼핑인사이트" 부분을 해보기로 하자.

 

 

가이드는 아래와 같으니 참고용으로...

https://developers.naver.com/docs/datalab/shopping/#%EC%82%AC%EC%A0%84-%EC%A4%80%EB%B9%84-%EC%82%AC%ED%95%AD

 

쇼핑인사이트 API 적용 가이드

쇼핑인사이트 API는 '네이버 데이터랩'의 '쇼핑인사이트'를 API로 실행할 수 있게하는 RESTful API입니다.

developers.naver.com

 


 

01. API 이용 신청

 

아래의 URL로 접속하여 사용할 API를 신청한다.

https://developers.naver.com/apps/#/wizard/register

 

애플리케이션 - NAVER Developers

 

developers.naver.com

나는 사진과 같이 API를 사용하기로 했다.

여기서, 환경 설정을 WEB으로 진행했는데, 나는 단순 데이터를 끌어와 나의 로컬영역(컴퓨터 특정 폴더)에 떨구고 싶었기 때문에 URL/URI를 내 로컬 폴더와 로컬호스트로 작성했다.

 

등록을 완료하게되면 이와같이 ClientID와 Client Secret을 발급해준다.

 

 

 

 

 

02.1. Coding

import os
import sys
import urllib.request
import json

client_id = "~~"
client_secret = "~~"
url = "https://openapi.naver.com/v1/datalab/shopping/categories";
# body = "{\"startDate\":\"2017-08-01\",\"endDate\":\"2017-09-30\",\"timeUnit\":\"date\",\"category\":[{\"name\":\"패션의류\",\"param\":[\"50000000\"]},{\"name\":\"화장품/미용\",\"param\":[\"50000002\"]}],\"device\":\"pc\",\"ages\":[\"20\",\"30\"],\"gender\":\"f\"}";
# 2020-03-02 수정
body = {
  "startDate": "2019-02-01",
  "endDate": "2020-02-29",
  "timeUnit": "date",
  "category": [{"name": "패션의류", "param": ["50000000"]}],
  "device": "",
  "gender": "",
  "ages": [ ]
}
body = json.dumps(body, ensure_ascii=False)


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)

이 코드는 API가이드에서 제공하는 샘플코드이다. 그대로 실행하면 잘 동작하는 것을 확인할 수 있다.

body부분은 가독성이 좋지 않으므로 이쁘게 바꿀 필요가 있다.

--> 2020-03-02 수정) 좀 더 보기 좋은 방법으로 바꾸어 보았다. 

 

샘플 소스 코드 실행 결과

위의 사진은 샘플 소스코드를 그대로 진행한 결과이다.(in jupyter notebook) 결과가 굉장히 보기 힘들고, type이 bytes로 되어 있다.

 

이를 좀 더 보기 편하게 하기 위해 다음과 같은 전처리 작업이 필요하다.

 

 

 

 

 

 

 

02.2 전처리

import json
import pandas as pd

data = json.loads(response_body)
pd.DataFrame(data['results'][1]['data'])

bytes 타입을 json 타입으로 바꿔주고, 필요한 데이터를 pandas의 DataFrame형태로 바꿔주면 훨씬 더 보기 편한 데이터로 바꿀 수 있다.

하지만 이때, 모든 데이터를 다 보기는 힘들기 때문에 카테고리별로 DataFrame을 만들던가 컬럼을 하나 더 만들어서 필요한 정보를 가공할 필요가 있다.

 

 

 

 

 

 


 

 

 

여기까지가 네이버API를 이용하여 쇼핑인사이트 카테고리 데이터를 성공적으로 확보할 수 있는 방법이었다.

 

 

728x90
반응형
Comments