배경 및 목적

  • 생성형 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명 설명 호출제한
검색 네이버 블로그, 이미지, 웹, 뉴스, 백과사전, 책, 카페, 지식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회/일
공유하기 네이버 블로그, 카페 공유하기 없음

댓글남기기