네이버 오픈 API는 파파고, 검색 등 다양한 기능을 제공한다.
이번에는 네이버 쇼핑 데이터를 수집하기 위해 데이터랩(쇼핑인사이트) API를 사용해보려고 한다.
(API 신청은 링크 참조)
신청을 마치면 "내 애플리케이션" 에서 위 사진과 같이 client_id, secret 정보, API 호출 사용량을 확인할 수 있다.
API 호출을 위해서는 client_id, secret이 필요하므로 따로 저장해두면 매번 들어가지 않아도 된다.
(client_id, secret을 외부에 노출하면 개인 정보 유출의 위험이 있기에 주의해야 한다.)
공식 문서에 있는 예시를 토대로 "패션의류"분야의 트렌드 조회 API를 코로나 전, 후 그리고 현시점을 파라미터로 넣어 총 세 번 호출했다.
client_id = ""
client_secret = ""
def category_search(startDate, endDate, timeUnit, name, param):
url = "https://openapi.naver.com/v1/datalab/shopping/categories"
headers = {
"X-Naver-Client-Id" : client_id,
"X-Naver-Client-Secret" : client_secret,
"Content-Type": "application/json"
}
data = {
"startDate": startDate,
"endDate": endDate,
"timeUnit": timeUnit,
"category": [
{"name": name, "param": [param]}
],
"device": "",
"gender": "",
"ages": []
}
response = requests.post(url, headers=headers, json=data)
if response.status_code == 200:
print("API call successful")
print(response.json())
else:
print(f"API call failed with status code {response.status_code}")
print(response.text)
result = response.json()
return result
before_result = category_search(startDate, endDate, timeUnit, name, param)
during_result = category_search(startDate, endDate, timeUnit, name, param)
after_result = category_search(startDate, endDate, timeUnit, name, param)
print("before_result: {}".format(before_result['results'][0]['data']))
print("during_result: {}".format(before_result['results'][0]['data']))
print("after_result: {}".format(before_result['results'][0]['data']))
before_result : [{'period': '2017-08-01', 'ratio': 82.71414}, {'period': '2017-09-01', 'ratio': 100}]
during_result: [{'period': '2020-08-01', 'ratio': 83.952}, {'period': '2020-09-01', 'ratio': 100}]
after_result:[{'period': '2023-08-01', 'ratio': 95.6374}, {'period': '2023-09-01', 'ratio': 100}]
각 기간에 대해 'ratio'는 초기 값에서 상승했다. 이는 시간이 지남에 따라 해당 지표가 향상되고 있다는 일반적인 패턴일 수 있다.
또 코로나 이후의 클릭량이 증가했고, 특히 after_result에서의 'ratio' 상승 폭이 높기 때문에, 이는 코로나 이후에 상품 또는 서비스에 대한 관심이 증가했다는 가능성을 시사할 수 있다. 그러나 클릭량 자체만으로 구매로 직결되었다고 단언하기는 어렵다.
탐험적 클릭인지 실제 구매 클릭인지 등을 고려해야 한다.
(만약 프로젝트 진행 시 클릭 = 구매 또는 클릭 = 관심도 라고 가설 설정해야 할 것 같다.)
이번에는 공식 문서에 있는 예시를 토대로 키워드별 트렌드 조회 API를 호출했다.
앞서 예시처럼 "패션/의류" 키워드가 아닌 이번에는 "전기차 충전기"라는 키워드로 트렌드 조회를 해보았다.
client_id = ""
client_secret = ""
def keyword_search(startDate, endDate, timeUnit, category, name, param):
url = "https://openapi.naver.com/v1/datalab/shopping/category/keywords"
headers = {
"X-Naver-Client-Id" : client_id,
"X-Naver-Client-Secret" : client_secret,
"Content-Type": "application/json"
}
data = {
"startDate": startDate,
"endDate": endDate,
"timeUnit": timeUnit,
"category": category,
"keyword" : [
{"name" : name, "param" : [param]}
],
"device": "",
"gender": "",
"ages": []
}
response = requests.post(url, headers=headers, json=data)
if response.status_code == 200:
print("API call successful")
print(response.json())
else:
print(f"API call failed with status code {response.status_code}")
print(response.text)
result = response.json()
return result
during_result = keyword_search(startDate, endDate, timeUnit, category, name, param)
after_result = keyword_search(startDate, endDate, timeUnit, category, name, param)
print("during_result : {}".format(during_result['results'][0]['data'])
print("after_result : {}".format(after_result['results'][0]['data'])
during_result = [{'period': '2020-08-01', 'ratio': 92.30769}, {'period': '2020-09-01', 'ratio': 100}]
after_result = [{'period': '2023-08-01', 'ratio': 100},{'period': '2023-09-01', 'ratio': 33.33333}]
코로나 이전에는 "전기차 충전기" 키워드 검색 클릭량이 상승하는 경향이 있었지만, 코로나 이후의 클릭량은 크게 감소했다. 감소는 여러 요인에 기인할 수 있으며, 이는 소비자 행동 변화, 경제적 영향, 시장 동향 등 다양한 원인을 반영할 수 있다.
최근 전기차 시장 동향을 살펴보니, 실제로 전기차 매출이 전세계적으로 감소하는 추세였다.
참고