데이터 엔지니어링 프로젝트 및 인강/1. Naver shopping Project

Side Project 02. 네이버 쇼핑 데이터 수집 함수 만들기

쟈누이 2020. 5. 26. 09:41
반응형

생성한 client id 와 client secret 를 바탕으로 본격적으로 

네이버 쇼핑 데이터를 수집한다..

 

기본적으로 api 정보를 넣고 이를 바탕으로 자료를 다운받아오는 것은

네이버 developer 에 있는 api 적용 가이드를 참고했다. 아래 참고 링크 공유한다.

https://developers.naver.com/docs/datalab/shopping/#%EC%87%BC%ED%95%91%EC%9D%B8%EC%82%AC%EC%9D%B4%ED%8A%B8-%EB%B6%84%EC%95%BC%EB%B3%84-%ED%8A%B8%EB%A0%8C%EB%93%9C-%EC%A1%B0%ED%9A%8C

 

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

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

developers.naver.com

기본적으로 데이터를 제공하는 다른 사이트들도 자기들이 제공하는 서비스에 맞게

api 를 통해 자료를 제공받을 수 있는 가이드를 제공하고 있다. 어떤 가이드는 친절한 반면.. 

어떤 가이드들은 좀 불친절한 곳도 있는 것 같아서..조심해야겠다..

네이버의 경우에는 매우 친절해서 api를 기입하고 데이터를 제공받는데 있어서 큰 어려움은 없었다.

import os
import sys
import urllib.request
client_id = "YOUR_CLIENT_ID"
client_secret = "YOUR_CLIENT_SECRET"
url = "https://openapi.naver.com/v1/datalab/shopping/categories";
body = "{\"startDate\":\"2017-08-01\",\"endDate\":\"2017-09-30\",\"timeUnit\":\"month\",\"category\":[{\"name\":\"패션의류\",\"param\":[\"50000000\"]},{\"name\":\"화장품/미용\",\"param\":[\"50000002\"]}],\"device\":\"pc\",\"ages\":[\"20\",\"30\"],\"gender\":\"f\"}";

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 수집 코드를 작성했다.

 

def get_shop(client_id, client_secret):
    # 아이디,시크릿 기입
    endpoint = 'https://openapi.naver.com/v1/datalab/shopping/categories'
    bodys = "{\"startDate\":\"2020-01-01\"," \
            "\"endDate\":\"2020-01-10\"," \
            "\"timeUnit\":\"date\"," \
            "\"category\":[{\"name\":\"패션의류\",\"param\":[\"50000000\"]}]}"

    # url 정보 기입
    requests = urllib.request.Request(endpoint)

    # header 정보 기입
    requests.add_header("X-Naver-Client-Id", client_id)
    requests.add_header("X-Naver-Client-Secret", client_secret)
    requests.add_header("Content-Type", "application/json")

    response = urllib.request.urlopen(requests, data=bodys.encode('utf-8'))
    
    # 에러 발생할 경우 예외 처리
    try:
        response = urllib.request.urlopen(requests, data=bodys.encode('utf-8'))
    except:
        logging.error(response.read())
        sys.exit(1)

    response = urllib.request.urlopen(requests, data=bodys.encode('utf-8'))
	
    # 제대로 연결이 되었을 때 api 의 내용을 출력하기
    if response.getcode() == 200:
        response_body = response.read()
        contents = response_body.decode('utf-8')
    else:
        print(response.getcode())
        print(response.read())
        sys.exit(1)
        
    return contents

위 기입한 코드와 같이 우선적으로 네이버 api 에서 정보를 가져오는 get_shop 이라는 함수를 만들었다.

그리고 이 코드를 바탕으로 다음에는 이를 AWS 에 데이터 베이스로 저장하는 프로세스를 진행하고자 한다.

 

 

반응형