데이터를 기반으로

네이버 뉴스 API 정리 본문

데이터 수집/API

네이버 뉴스 API 정리

이노후 2024. 3. 26. 23:10
728x90
반응형

특정 키워드 관련 뉴스들을 모니터링 하기 위해 네이버 api 로 뉴스를 가져오는 방법을 소개하고자 한다.

 

https://developers.naver.com/main/

 

NAVER Developers

네이버 오픈 API들을 활용해 개발자들이 다양한 애플리케이션을 개발할 수 있도록 API 가이드와 SDK를 제공합니다. 제공중인 오픈 API에는 네이버 로그인, 검색, 단축URL, 캡차를 비롯 기계번역, 음

developers.naver.com

 

가장 먼저 할 일은 네이버에서 api 를 신청하는 것이다.

상기 페이지를 접속하면 뉴스 api 뿐만 아니라 다양한 기능들을 제공하는 걸 확인할 수 있다.

 

신청 방법은 구글에 굉장히 많은 자료들이 존재하기에 간단하게 말씀드리고 넘어가겠습니다.

신청해야할 api는 "검색" 이고 어플리케이션을 생성하면 된다. 

 

참고로 "비로그인 오픈 API 서비스 환경"은 본인의 코드가 실행되는 환경(저는 로컬 주피터 노트북과 추후 자동화를 위해 구글 클라우드 플랫폼으로 지정)으로 설정해주면 된다.

 

API신청이 완료가 되면  'client id' 와 'client secret' 을 얻을 수 있게 된다.

 

셋팅은 완료가 되었다.

 

API 를 코드상에서 불러오고자 할 때 항상 페이지 설명글을 잘 읽어봐야한다.

 

요청변수가 무엇인지, 응답변수는 무엇인지 등 살펴봐야하는 것들이 많다.

 

https://developers.naver.com/docs/serviceapi/search/news/news.md#%EB%89%B4%EC%8A%A4

 

검색 > 뉴스 - Search API

검색 > 뉴스 뉴스 검색 개요 개요 검색 API와 뉴스 검색 개요 검색 API는 네이버 검색 결과를 뉴스, 백과사전, 블로그, 쇼핑, 웹 문서, 전문정보, 지식iN, 책, 카페글 등 분야별로 볼 수 있는 API입니다

developers.naver.com

뉴스 API에 해당하는 설명 페이지 링크이다.

 

요청 변수(=파라미터)들은 총 4가지 이지만, 필수 값은 'query'라는 1가지 이다.

 

 

 

 

 

 

 

import os
import sys
import urllib.request
import datetime
import time
import json
import pandas as pd
import datetime
import re

search_keyword = '1기 신도시'

# 네이버 검색 API
client_id = "본인의 client_id"
client_secret = "본인의 client_secret"

encText = urllib.parse.quote(str(search_keyword))
today = datetime.datetime.now().strftime('%Y-%m-%d')

# 테스트용 첫 페이지만 가져오기
url = "https://openapi.naver.com/v1/search/news.json?query=" + encText + "&start=" + str(1) + "&display=100"

request = urllib.request.Request(url)
request.add_header("X-Naver-Client-Id",client_id)
request.add_header("X-Naver-Client-Secret",client_secret)

response = urllib.request.urlopen(request)
rescode = response.getcode()

if(rescode==200):
    response_body = response.read()
    print('request Success')
    # print(response_body.decode('utf-8'))
else:
    print("Error Code:" + rescode)


response_result = response_body.decode('utf-8')
response_result = json.loads(response_result)

 

위 코드 실행시 response_result 는 아래 결과와 같다.

 

 

해당 json을 DataFrame으로 변환 후 편하게 사용하면 될 것 같다.

 

 

728x90
반응형