ChatGPT와 네이버 API로 실시간 뉴스 검색 & 트렌드 분석 마스터하기
배경 및 목적
- 생성형 LLM 모델은 학습된 데이터에 기반하여 응답을 생성하기 때문에 최신 정보 반영에 한계가 있습니다.
- 실시간 뉴스, 검색어 트렌드 등 최신 데이터를 제공하기 위해 외부 API 호출이 필수적입니다.
- 네이버 오픈 API는 뉴스 검색과 검색어 트렌드 데이터를 효율적으로 제공하여, 데이터 분석 및 실시간 정보 업데이트에 큰 도움이 됩니다.
본론
프로그램 소개
- 키워드와 건수를 입력받아 네이버 오픈 API를 호출, 뉴스 정보를 출력하는 예제
- 검색 결과에서 링크 정보를 제외한 뉴스 항목들을 반환하여 깔끔한 데이터 제공
- 일자, 검색어, 연령, 성별 등의 조건을 입력받아 검색 트렌드 결과를 출력하는 예제
- 특정 기간 동안의 트렌드 데이터를 활용하여 심도 있는 분석이 가능
활용툴
- 생성형 AI: ChatGPT (유료 플랜)
- VS-code와 Python 기반 개발 환경 (또는 Google Colab) ※ 개발 환경 구성이 어려운 경우 구글 Colab을 활용할 수 있습니다.
실행과정
#### 네이버 뉴스 검색 API 예제 코드
# 네이버 오픈 API를 활용하여 뉴스 검색 결과를 반환하는 함수
def search_naver_news(search_keyword, news_count):
# 네이버 API 클라이언트 정보 가져오기 (.env 파일에 저장된 API ID와 Secret 사용)
client_id = os.getenv('NAVER_CLIENT_ID')
client_secret = os.getenv('NAVER_CLIENT_SECRET')
# API 호출 URL 구성 (뉴스 검색 API 엔드포인트)
api_url = f"https://openapi.naver.com/v1/search/news.json?query={search_keyword}&display={news_count}&sort=date"
# 요청 헤더에 인증 정보 추가
headers = {
'X-Naver-Client-Id': client_id,
'X-Naver-Client-Secret': client_secret
}
# API 호출 및 응답 처리
response = requests.get(api_url, headers=headers)
if response.status_code == 200:
content = response.json()
# 'link' 필드를 제외한 뉴스 정보 반환
items = [
{key: value for key, value in item.items() if key != 'link'}
for item in content['items']
]
return items
else:
print(f"\n[Error] Failed to fetch data:\nStatus Code: {response.status_code}\nResponse: {response.text}\n")
raise Exception(f"Failed to fetch data. Status code: {response.status_code}")
실행 결과 예시 이미지를 통해 데이터 출력 형태를 확인할 수 있습니다.
네이버 검색어 트렌드 API 예제 코드
# 네이버 데이터랩 API를 활용하여 검색 트렌드 데이터를 반환하는 함수
def search_naver_datalab(keywords):
# API 클라이언트 정보 가져오기
client_id = os.getenv('NAVER_DATALAB_CLIENT_ID')
client_secret = os.getenv('NAVER_DATALAB_CLIENT_SECRET')
api_url = "https://openapi.naver.com/v1/datalab/search"
headers = {
'X-Naver-Client-Id': client_id,
'X-Naver-Client-Secret': client_secret,
'Content-Type': 'application/json'
}
# API 요청에 사용할 데이터 구성
request_body = {
"startDate": "2024-01-01",
"endDate": "2024-01-31",
"timeUnit": "date",
"keywordGroups": [
{
"groupName": "검색 트렌드",
"keywords": keywords
}
],
"device": "pc",
"ages": ["1", "2"],
"gender": "f"
}
response = requests.post(api_url, headers=headers, data=json.dumps(request_body))
if response.status_code == 200:
content = response.json()
return content['results']
else:
print(f"\n[Error] Failed to fetch data:\nStatus Code: {response.status_code}\nResponse: {response.text}\n")
raise Exception(f"Failed to fetch data. Status code: {response.status_code}")
실행 결과 예시 이미지를 통해 트렌드 데이터의 시각적 출력도 확인할 수 있습니다.
결론
- 네이버 오픈 API를 활용하면 최신 뉴스와 검색 트렌드 데이터를 손쉽게 확보할 수 있어, 실시간 정보 기반 애플리케이션 개발에 매우 유리합니다.
- API 사용 시 인증 정보 관리 및 파라미터 설정에 주의를 기울여야 하며, 이를 통해 체계적이고 안정적인 데이터 처리 방법을 익힐 수 있습니다.
- 개인적으로 실시간 데이터의 중요성을 체감하며, API 활용으로 데이터 분석의 새로운 가능성을 경험할 수 있었습니다.
참고자료
- 네이버 오픈 API 관련 문서 및 가이드: https://developers.naver.com/products/intro/plan/plan.md
API명 | 설명 | 호출제한 |
검색 | 네이버 블로그, 이미지, 웹, 뉴스, 백과사전, 책, 카페, 지식iN 등 검색 | 25,000회/일 |
네이버 로그인 | 외부 사이트에서 네이버 로그인 기능 구현 | 없음 |
네이버 회원 프로필 조회 | 네이버 회원 이름, 이메일 주소, 휴대전화번호, 별명, 성별, 생일, 연령대, 출생연도, 프로필 조회 | 없음 |
CLOVA Face Recognition | 입력된 사진을 입력받아 얼굴윤곽/부위/표정/유명인 닮음도를 리턴 | 1,000건/일 |
데이터랩(검색어트렌드) | 통합검색어 트렌드 조회 | 1,000회/일 |
데이터랩(쇼핑인사이트) | 쇼핑인사이트 분야별 트렌드 조회 | 1,000회/일 |
캡차(이미지) | 자동 입력 방지용 보안 이미지 생성 및 입력값 비교 | 1,000회/일 |
캘린더 | 로그인한 사용자 캘린더에 일정 추가 가능 | 5,000회/일 |
카페 | 특정 네이버 카페 가입하기 | 50회/일 |
카페 | 네이버 회원이 가입한 카페 게시판에 글 쓰기 | 200회/일 |
단축URL | 입력된 URL을 me2.do 형태의 짧은 URL로 변환 | 25,000회/일 |
공유하기 | 네이버 블로그, 카페 공유하기 | 없음 |
댓글남기기