안녕하세요.
오늘은 네이버의 검색 API 및 네이버 데이터랩 API를 사용하는 방법에 대하여 알아보겠습니다.
네이버 개발자 센터 - https://developers.naver.com/main/
NAVER Developers
네이버 오픈 API들을 활용해 개발자들이 다양한 애플리케이션을 개발할 수 있도록 API 가이드와 SDK를 제공합니다. 제공중인 오픈 API에는 네이버 로그인, 검색, 단축URL, 캡차를 비롯 기계번역, 음
developers.naver.com
네이버 개발자 센터 페이지에서 로그인하면 여러가지 API를 지원 받을 수 있습니다.
해당 사이트에서 애플리케이션 등록 → 내 애플리케이션 (등록한 해당 애플리케이션 선택) →
API설정 → 사용 API → 사용할 API를 등록합니다.
API 리스트
대부분 일정량까지는 무료이며, 초과시 과금이 되는 형태입니다.
오늘은 검색 API와 데이터랩 API 사용법에 대하여 알아보겠습니다.
.env파일내에 아래와 같이 발급받은 NAVER_CLIENT_ID , NAVER_CLIENT_SECRET키를 작성해줍니다.
# 네이버 검색 API 설정
NAVER_CLIENT_ID=your_naver_client_id
NAVER_CLIENT_SECRET=your_naver_client_secret
다음은 네이버 검색 API를 사용할 메서드를 작성해줍니다.
naverSearchApi.py
import aiohttp
import os
NAVER_CLIENT_ID = os.getenv("NAVER_CLIENT_ID")
NAVER_CLIENT_SECRET = os.getenv("NAVER_CLIENT_SECRET")
async def search_naver_api(keyword: str, display: int = 10):
url = f"https://openapi.naver.com/v1/search/blog.json?query={keyword}&display={display}"
headers = {
"X-Naver-Client-Id": NAVER_CLIENT_ID,
"X-Naver-Client-Secret": NAVER_CLIENT_SECRET
}
async with aiohttp.ClientSession() as session:
async with session.get(url, headers=headers) as response:
return await response.json()
메인 컨트롤러에서 해당 메서드를 호출해줍니다.
main.py
from fastapi import APIRouter
from ..services.naverSearchApi import search_naver_api
router = APIRouter()
@router.get("/search/naver")
async def naver_search(keyword: str):
result = await search_naver_api(keyword)
return result
다음은 네이버 데이터랩 API를 사용할 메서드를 작성해줍니다.
naverDataApi.py
from fastapi import APIRouter, HTTPException
import os
import requests
NAVER_CLIENT_ID = os.getenv("NAVER_CLIENT_ID")
NAVER_CLIENT_SECRET = os.getenv("NAVER_CLIENT_SECRET")
@router.post("/trend-api")
async def analyze_trend(keywords: list):
"""네이버 데이터랩 API를 통한 트렌드 분석"""
try:
url = "https://openapi.naver.com/v1/datalab/search"
headers = {
"X-Naver-Client-Id": NAVER_CLIENT_ID,
"X-Naver-Client-Secret": NAVER_CLIENT_SECRET,
"Content-Type": "application/json"
}
payload = {
"startDate": "2024-01-01",
"endDate": "2024-12-31",
"timeUnit": "month",
"keywordGroups": [{"groupName": kw, "keywords": [kw]} for kw in keywords]
}
response = requests.post(url, json=payload, headers=headers)
response.raise_for_status()
return response.json()
except Exception as e:
raise HTTPException(status_code=500, detail=f"트렌드 분석 중 오류: {str(e)}")
위와 같이 작성후 결과를 웹으로 json으로 받아보거나 디버그로 체크해보시면 정상적으로 리턴되는걸 볼 수 있습니다.
감사합니다.
'BigData' 카테고리의 다른 글
대형 언어 모델(LLM) 및 NLP 대표 분석 기법에 대하여 알아보자. (2) | 2025.02.21 |
---|---|
GLM과 Logit의 차이점은? (0) | 2024.11.25 |
빅데이터 분석기사 _3유형 정리 (1) | 2024.11.21 |
numpy의 concatenate() 함수를 사용할때 zero-dimensional arrays cannot be concatenated 오류 (1) | 2024.11.17 |
ROC_AUC_Score / Accuracy / F1 Score의 차이와 선택 기준 (1) | 2024.11.16 |