Naver Api 사용하기 사전 준비 단계
①. 네이버 오픈 API 이용 신청하기
https://developers.naver.com/products/service-api/datalab/datalab.md
②. 애플리케이션 등록 (Application 메뉴 선택 > 애플리케이션 등록)
- 애플리케이션 이름
- 사용API
- 등록하기 버튼 클릭으로 완료.
등록을 완료하시면 Client ID와 Client Secret 정보를 받게 됩니다.
이 정보를 이용해서 네이버 OPEN API에 접근할 수 있습니다.
③. 네이버 오픈 API 목록
검색 | 네이버 블로그, 이미지, 웹, 뉴스, 백과사전, 책, 카페, 지식iN 등 검색 | 25,000회/일 |
네이버 로그인 | 외부 사이트에서 네이버 로그인 기능 구현 | 없음 |
네이버 회원 프로필 조회 | 네이버 회원 이름, 이메일 주소, 휴대전화번호, 별명, 성별, 생일, 연령대, 출생연도, 프로필 조회 | 없음 |
Papago 번역 | Papago 번역 인공신경망 기반 기계 번역 | 10,000글자/일 |
CLOVA Face Recognition | 입력된 사진을 입력받아 얼굴윤곽/부위/표정/유명인 닮음도를 리턴 | 1,000건/일 |
데이터랩(검색어트렌드) | 통합검색어 트렌드 조회 | 1,000회/일 |
데이터랩(쇼핑인사이트) | 쇼핑인사이트 분야별 트렌드 조회 | 1,000회/일 |
캡차(이미지) | 자동 입력 방지용 보안 이미지 생성 및 입력값 비교 | 1,000회/일 |
캘린더 | 로그인한 사용자 캘린더에 일정 추가 가능 | 5,000회/일 |
카페 | 특정 네이버 카페 가입하기 | 50회/일 |
카페 | 네이버 회원이 가입한 카페 게시판에 글 쓰기 | 200회/일 |
단축URL | 입력된 URL을 me2.do 형태의 짧은 URL로 변환 | 25,000회/일 |
공유하기 | 네이버 블로그, 카페 공유하기 | 없음 |
④. 개발자가이드의 예제 참고하시면 됩니다.
파이썬으로 네이버 뉴스 검색하기
① 위와 같이 네이버 API 사용신청해서, 클라이언트 ID와 비밀번호를 획득합니다.
# 네이버 API 정보 입력
client_id = "cxLC9~~~~~~~ZWtX";
client_secret = "nSSV_~~~~2";
② 네이버API를 사용한 뉴스 검색 코드
- 네이버API를 사용하여 뉴스를 검색하는 코드는 아래와 같습니다.
import requests
from datetime import datetime, timedelta
# 네이버 API 정보 입력
client_id = "cxLC9~~~~~~~ZWtX";
client_secret = "nSSV_~~~~2";
# 검색 함수
def search_naver_news(query):
url = "https://openapi.naver.com/v1/search/news.json"
headers = {
"X-Naver-Client-Id": client_id,
"X-Naver-Client-Secret": client_secret,
}
params = {
"query": query,
"display": 10, # 최대 100개까지 가능
"start": 1,
"sort": "date" # date: 날짜순, sim: 유사도순
}
response = requests.get(url, headers=headers, params=params)
if response.status_code == 200:
return response.json()['items']
else:
print("Error Code:", response.status_code)
return None
③ 검색한 결과값에서 시간정렬하여 출력하기
# 게시 시간을 변환하는 함수
def convert_time(pub_date):
# 예시 시간: 'Mon, 26 Aug 2024 17:32:00 +0900'
dt = datetime.strptime(pub_date, '%a, %d %b %Y %H:%M:%S %z')
return dt.strftime('%Y-%m-%d %H:%M:%S')
# 뉴스 검색 및 출력 함수
def print_news_results(query):
news_items = search_naver_news(query)
if news_items:
# 게시 시간을 변환하고, 시간순으로 정렬
for item in news_items:
item['converted_pubDate'] = convert_time(item['pubDate'])
# 정렬: 최신 뉴스가 가장 마지막에 오도록 정렬
sorted_news = sorted(news_items, key=lambda x: x['converted_pubDate'])
# 프로그램 실행일의 전날짜부터 출력
yesterday = (datetime.now() - timedelta(days=1)).strftime('%Y-%m-%d')
filtered_news = [
item for item in sorted_news if item['converted_pubDate'] >= yesterday
]
return filtered_news
else:
print(f"No results found for query: {query}")
return []
전체코드
위 뉴스 검색, 시간정렬 코드들을 포함한 전체코드는 아래와 같습니다.
import requests
from datetime import datetime, timedelta
# 네이버 API 정보 입력
client_id = "cxLC9~~~~~~~ZWtX";
client_secret = "nSSV_~~~~2";
# 검색 함수
def search_naver_news(query):
url = "https://openapi.naver.com/v1/search/news.json"
headers = {
"X-Naver-Client-Id": client_id,
"X-Naver-Client-Secret": client_secret,
}
params = {
"query": query,
"display": 10, # 최대 100개까지 가능
"start": 1,
"sort": "date" # date: 날짜순, sim: 유사도순
}
response = requests.get(url, headers=headers, params=params)
if response.status_code == 200:
return response.json()['items']
else:
print("Error Code:", response.status_code)
return None
# 게시 시간을 변환하는 함수
def convert_time(pub_date):
# 예시 시간: 'Mon, 26 Aug 2024 17:32:00 +0900'
dt = datetime.strptime(pub_date, '%a, %d %b %Y %H:%M:%S %z')
return dt.strftime('%Y-%m-%d %H:%M:%S')
# 뉴스 검색 및 출력 함수
def print_news_results(query):
news_items = search_naver_news(query)
if news_items:
# 게시 시간을 변환하고, 시간순으로 정렬
for item in news_items:
item['converted_pubDate'] = convert_time(item['pubDate'])
# 정렬: 최신 뉴스가 가장 마지막에 오도록 정렬
sorted_news = sorted(news_items, key=lambda x: x['converted_pubDate'])
# 프로그램 실행일의 전날짜부터 출력
yesterday = (datetime.now() - timedelta(days=1)).strftime('%Y-%m-%d')
filtered_news = [
item for item in sorted_news if item['converted_pubDate'] >= yesterday
]
return filtered_news
else:
print(f"No results found for query: {query}")
return []
if __name__ == '__main__':
# "사건+사고" 검색
print("검색어: 사건+사고")
news_results = print_news_results("사건+사고")
for item in news_results:
print(f"게시 시간: {item['converted_pubDate']}")
print(f"제목: {item['title']}")
print(f"링크: {item['link']}")
print(f"요약: {item['description']}\n")
결과
네이버API를 사용한 네이버뉴스 검색(검색어: '사건+사고')을 실행한 결과입니다.
'공학속으로 > python' 카테고리의 다른 글
[python] 날씨 api를 사용하여 날씨, 습도 구하기 (1) | 2024.12.09 |
---|---|
[python] 안랩블로그 게시글 크롤링 (1) | 2024.12.09 |
[Python] URL 목록 파일 이용한 파일 다운로드 (0) | 2024.07.16 |
[파이썬] 관리자 모드로 외부 프로그램 실행하기 GUI (1) | 2023.12.16 |
[파이썬] 파일 복사 GUI 형태로 만들기 (0) | 2023.12.16 |
댓글