Lala's tower

NAVER API 데이터랩 사용 방법

NAVER API 데이터랩 사용 방법

2024-04-22 21:23:02

NAVER API 데이터랩 사용법을 정리하였습니다. 통합 검색 트렌드는 키워드, 기간, 검색 장치, 성별, 연령대별 검색량을 확인하는 API입니다.

NAVER API 데이터랩 검색 결과

검색 키워드의 기간 동안 검색량 변화를 아래와 같이 확인할 수 있습니다.
(그래프 타이틀에서 한글이 깨진다...)

NAVER API 데이터랩 결과 화면

NAVER API 데이터랩 소스 코드

client_id, client_secret를 아래 소스에 붙여넣기 한 후, 아래 코드를 colab에 복붙하고 실행하시면 됩니다.
client_id, client_secret 확인

# -*- coding: utf-8 -*-
import urllib.request
import json
import matplotlib.pyplot as plt

client_id = "YOUR_CLINET_ID"
client_secret = "YOUR_CLIENT_SECRET"
url = "https://openapi.naver.com/v1/datalab/search";

groupname1 = "식품"
keyword1 = "유산균"
groupname2 = "식품"
keyword2 = "오메가3"
start_date = "2024-03-21"
end_date = "2024-04-20"
timeUnit = "date" # week, month

print(f"키워드1:{keyword1}")
print(f"키워드2:{keyword2}")
print(f"기간:{start_date}-{end_date}")

body = json.dumps({
    "startDate": start_date,
    "endDate": end_date,
    "timeUnit": timeUnit,
    "keywordGroups": [
        {"groupName": groupname1, "keywords": [keyword1]},
        {"groupName": groupname2, "keywords": [keyword2]}
    ],
    "device": "pc", # mo
    "ages": ["1", "2"], # 다른 연령대는 아래 문서링크 참조
    "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()
else:
    print("Error Code:" + rescode)
    pass

data = json.loads(response_body)
print(json.dumps(data, indent=4, ensure_ascii=False))

# 각 키워드 그룹별 데이터 추출
for result in data["results"]:
    title = result["title"]
    keywords = result["keywords"]
    data_points = result["data"]

    # period와 ratio 리스트 생성
    periods = [data_point["period"] for data_point in data_points]
    ratios = [data_point["ratio"] for data_point in data_points]

    # 그래프 그리기
    plt.figure(figsize=(12, 6))
    plt.plot(periods, ratios)
    plt.xlabel("Period")
    plt.ylabel("Ratio")
        plt.title(f"{title} - {', '.join(keywords)}")
    plt.xticks(rotation=45)
    plt.show()

NAVER API로 키워드 검색
네이버 통합 검색어 트렌드 문서