반응형
생성한 client id 와 client secret 를 바탕으로 본격적으로
네이버 쇼핑 데이터를 수집한다..
기본적으로 api 정보를 넣고 이를 바탕으로 자료를 다운받아오는 것은
네이버 developer 에 있는 api 적용 가이드를 참고했다. 아래 참고 링크 공유한다.
기본적으로 데이터를 제공하는 다른 사이트들도 자기들이 제공하는 서비스에 맞게
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 에 데이터 베이스로 저장하는 프로세스를 진행하고자 한다.
반응형
'데이터 엔지니어링 프로젝트 및 인강 > 1. Naver shopping Project' 카테고리의 다른 글
Side Project 05( Final ). Naver Shopping 정리 (0) | 2020.06.04 |
---|---|
Side Project 04( Final ). Colab 을 통해 최종적 파이프라인 구축하기x (0) | 2020.05.31 |
Side Project 03. AWS 에 데이터 넣기 (3) | 2020.05.26 |
Side Project 01. 네이버 developer api 생성하기 (0) | 2020.05.26 |
Side Project 00-1. 이번 사이드 프로젝트의 목표 (2) | 2020.05.26 |