(01.10) 수정됨.
텔레그램 채널을 통해 속보 뉴스를 받아볼 수 있습니다.
텔레그램 채널 : https://t.me/+9Ag_dp6SPt43NzM9
이런 동작을 하는 코드는 어떻게 작성하 수 있을까요? 한 번 알아보겠습니다.
네이버에서 검색할 수 있는 다양한 뉴스들
검색 포털인 네이버에서는 다양한 뉴스를 검색으로 찾아볼 수 있습니다.
그리고 그 중에는 속보로 전해지는 뉴스도 있는데요.
속보 뉴스는 1초라도 빨리 정보를 전달하기 위해 내용은 없지만, 그 정보 자체로 중요한 정보가 되기도 합니다.
처음에는 속보로 간략하게 전달되었다가, 나중에 상세한 내용으로 이어지는 뉴스가 만들어지기도 하구요.
간혹 속보 자체로 큰 뉴스가 되는 경우도 있습니다.
최근에는 1월 27일을 설 연휴 임시 공휴일로 지정한다는 소식이 속보로 전해지기도 했습니다.
그 덕에 1월 25일부터 1월 30일까지 6일의 연휴를 보낼 수 있고, 1월 31일 금요일에 연차를 사용한다면 6일이 아닌 9일의 연휴를 보낼 수도 있게 되었습니다.
이렇게 속보로 전해지는 뉴스들을 자세히 살펴보면 한 가지 특징이 있는 것을 알 수 있습니다. 같은 문구를 제목으로 하는 속보 뉴스가 많다는 것인데요.
임시공휴일 속보를 살펴보면 1월 27일 설 연휴 임시공휴일 지정이라는 제목의 뉴스가 많이 만들어졌습니다.
그렇다면, 이렇게 많이 언급되는 문구가 있는 속보들을 따로 골라낼 수만 있다면, 꽤 쓸만하지 않을까요?
이를 위해 필요한 것
이런 작업을 위해 필요한 것은 크게 2가지입니다.
하나는 이런 속보 뉴스들을 받아오는 방법이고, 다른 하나는 모은 뉴스를 확인할 수 있는 공간입니다.
운이 좋게도 우리는 이것들을 텔레그렘과 네이버에서 제공해주는 api를 통해 손쉽게 해결할 수 있습니다.
네이버 api로 뉴스 검색하기
네이버에서는 뉴스를 검색할 수 있는 api를 제공하고 있고, 간단한 코드를 통해 api를 이용할 수 있습니다.
네이버에서 제공해주는 예제를 활용해서 다음과 같은 코드를 작성할 수 있구요.
import json
from pathlib import Path
from pprint import pprint
import requests
auth = {api 인증키 정보}
session = requests.session()
session.headers = {
'X-Naver-Client-Id': auth['id'],
'X-Naver-Client-Secret': auth['secret']
}
url = 'https://openapi.naver.com/v1/search/news.json'
payload = {
'query': '속보 공휴일',
'display': 10,
'start': 1,
'sort': 'date',
}
with session.get(url, params=payload, timeout=5) as r:
j: dict = r.json()
for i in enumerate(j['items']): pprint(i, sort_dicts=False)
이렇게 작성한 코드를 이용해 속보 뉴스를 받고, 뉴스를 분석하는 코드를 작성하면 다음과 같이 작성할 수 있습니다.
이 코드에서는 뉴스의 제목 뿐만 아니라 뉴스의 발행시간을 확인해 최신 뉴스가 맞는지 확인하고, 또 어떤 문구들이 반복될 수 있는지, 그리고 얼마나 반복되었는지를 확인하는 작업을 수행해야 하기 때문에, 처음과는 다르게 다소 긴 코드가 되었습니다.
https://github.com/white-seolpyo/breakNews/blob/main/seolpyo_BreakNews/news.py
이렇게 완성한 코드를 웹 서버에서 10분마다 실행하도록 하는 것으로 10분마다 속보 뉴스를 받아볼 수 있습니다.
소스 코드 : https://github.com/white-seolpyo/breakNews/tree/main