NewsAPI를 활용하여 AI 뉴스 수집하기
서론
인공지능(AI) 기술이 급격히 발전하면서 AI와 관련된 뉴스도 매일 새롭게 쏟아지고 있습니다. 특히 GPT(Generative Pre-trained Transformer)와 LLM(Large Language Model) 기술이 대중화되면서, 이 분야에 대한 최신 정보를 지속적으로 확인하는 것이 중요합니다. 이 블로그 글에서는 NewsAPI를 활용하여 AI 관련 최신 뉴스를 자동으로 수집하는 방법을 소개하겠습니다. Python으로 간단하게 코드를 작성하여 AI, LLM, GPT와 같은 키워드로 오늘의 주요 뉴스를 검색하고, 결과를 출력하는 방법을 다룹니다. 또한 NewsAPI에서 제공하는 다양한 옵션을 활용하여 원하는 형태로 데이터를 조정하는 방법도 함께 알아보겠습니다.
본론
1. NewsAPI 개요
NewsAPI는 세계 여러 매체에서 제공하는 뉴스 기사를 API를 통해 손쉽게 검색할 수 있게 해주는 서비스입니다. 뉴스 소스를 설정하거나 키워드, 언어, 정렬 기준 등을 선택하여 원하는 뉴스를 자동으로 수집할 수 있습니다. NewsAPI는 무료와 유료 플랜을 제공하며, 무료 플랜에서도 충분히 유용한 기능을 제공합니다.
NewsAPI 키 발급 절차
NewsAPI를 사용하려면 먼저 API 키를 발급받아야 합니다. NewsAPI는 무료 플랜을 제공하므로 누구나 쉽게 시작할 수 있습니다. 아래는 API 키를 발급받는 절차입니다.
1) NewsAPI 웹사이트 접속
먼저 NewsAPI 공식 웹사이트에 접속합니다.
2) 회원가입 또는 로그인
아직 계정이 없다면 우측 상단의 “Sign Up” 버튼을 클릭하여 회원가입을 진행합니다. 이미 계정이 있는 경우 “Log In” 버튼을 클릭하여 로그인합니다.
3) 계정 정보 입력
회원가입 시 이메일 주소, 비밀번호 등을 입력하여 계정을 만듭니다. 가입을 완료하면 등록한 이메일 주소로 인증 메일이 전송될 수 있으니 확인하여 인증 절차를 완료합니다.
4) API 키 발급
로그인 후 대시보드에 접속하면 “Get API Key” 버튼을 통해 API 키를 받을 수 있습니다. 대시보드에서 API 키는 즉시 확인 가능하며, 해당 키를 복사하여 사용하면 됩니다.
5) API 사용 제한 및 업그레이드
기본 무료 플랜은 하루에 최대 100개의 요청을 허용합니다. 만약 더 많은 요청이 필요하거나 추가 기능이 필요하다면, 업그레이드 옵션을 통해 유료 플랜으로 전환할 수 있습니다.
이렇게 발급된 API 키는 Python 코드의 api_key
부분에 입력하여 사용하면 됩니다.
api = NewsApiClient(api_key='YOUR_API_KEY_HERE')
이제 API 키를 사용하여 다양한 뉴스를 검색하고 분석하는 작업을 시작할 수 있습니다.
2. Python 환경에서 NewsAPI 사용하기
NewsAPI는 간단한 설치를 통해 Python 환경에서 사용할 수 있습니다. 다음은 NewsAPI Python 클라이언트를 설치하는 방법입니다.
pip install newsapi-python
설치가 완료되면, 다음과 같은 방식으로 클라이언트를 초기화할 수 있습니다.
from newsapi import NewsApiClient
# NewsAPI 클라이언트 초기화
api = NewsApiClient(api_key='YOUR_API_KEY_HERE')
여기서 YOUR_API_KEY_HERE
에 개인 NewsAPI 키를 입력해야 합니다. NewsAPI 키는 NewsAPI 공식 사이트에서 무료로 발급받을 수 있습니다.
3. 오늘의 AI 관련 뉴스 검색 코드
이제 Python을 이용해 AI
, LLM
, GPT
키워드를 포함한 오늘의 주요 뉴스를 수집하는 샘플프로그램 코드를 살펴보겠습니다.
from newsapi import NewsApiClient
from datetime import datetime
# NewsAPI 클라이언트 초기화
api = NewsApiClient(api_key='YOUR_API_KEY_HERE')
# 현재 날짜와 1일전 날짜 계산
end_date = datetime.now().date()
start_date = end_date - timedelta(days=1)
# 'AI', 'LLM', 'GPT' 키워드를 포함한 뉴스 검색, 관련도 순으로, 최대 5개
ai_news = api.get_everything(q='AI OR LLM OR GPT',
from_param=start_date,
to=end_date,
language='en',
sort_by='relevancy',
page_size=5)
# 결과 출력
for article in ai_news['articles']:
print(f"제목: {article['title']}")
print(f"링크: {article['url']}")
print(f"출판 날짜: {article['publishedAt']}")
print(f"설명: {article['description']}")
print("\n" + "-"*50 + "\n")
print(f"총 {len(ai_news['articles'])}개의 기사를 찾았습니다.")
4. NewsAPI에서 제공하는 다양한 옵션
NewsAPI는 두 가지 주요 엔드포인트를 제공합니다: Everything
과 Top Headlines
. 두 엔드포인트는 각기 다른 용도로 사용되며, 적용할 수 있는 옵션도 다릅니다. 아래에서 각각의 옵션을 설명하고, 예제 코드를 통해 활용법을 알아보겠습니다.
1. Everything 엔드포인트
Everything
엔드포인트는 전 세계 모든 뉴스 기사를 대상으로 키워드 검색을 수행합니다. 더 광범위한 검색이 가능하며, 다양한 필터링 옵션을 통해 원하는 뉴스를 찾을 수 있습니다.
적용 가능한 옵션
- q: 검색할 키워드. 예:
q='AI OR GPT OR LLM'
- qInTitle: 뉴스 기사 제목에서만 키워드 검색. 예:
qInTitle='AI'
- sources: 특정 뉴스 소스만 필터링. 예:
sources='bbc-news, techcrunch'
- domains: 특정 도메인에서만 뉴스 검색. 예:
domains='bbc.co.uk, techcrunch.com'
- excludeDomains: 특정 도메인을 제외하고 검색. 예:
excludeDomains='example.com'
- from: 검색할 시작 날짜 (ISO 8601 형식). 예:
from='2023-09-20'
- to: 검색할 종료 날짜 (ISO 8601 형식). 예:
to='2023-09-22'
- language: 뉴스의 언어를 설정. 예:
language='en'
(지원 언어:ar
de
en
es
fr
he
it
nl
no
pt
ru
sv
ud
zh
) –> 한국어가 안되네요.. - sortBy: 검색 결과 정렬 기준.
'relevancy'
,'popularity'
,'publishedAt'
중 선택 가능. - pageSize: 한 페이지에 표시할 기사 수 (최대 100).
- page: 페이지 번호.
Everything 예제 코드
from newsapi import NewsApiClient
api = NewsApiClient(api_key='YOUR_API_KEY_HERE')
# 'AI', 'GPT', 'LLM' 키워드를 포함한 뉴스 검색 (전체 뉴스)
everything_news = api.get_everything(q='AI OR GPT OR LLM',
language='en',
from_param='2023-09-20',
to='2023-09-22',
sort_by='publishedAt', # 출판 날짜 순으로 정렬
page_size=5)
# 결과 출력
for article in everything_news['articles']:
print(f"제목: {article['title']}")
print(f"링크: {article['url']}")
print(f"출판 날짜: {article['publishedAt']}")
print(f"설명: {article['description']}")
print("\n" + "-"*50 + "\n")
이 코드에서는 Everything
엔드포인트를 사용해 특정 기간 동안 출판된 AI 관련 뉴스 기사를 검색합니다. from_param
과 to
옵션을 통해 시작 날짜와 종료 날짜를 지정하고, 결과는 출판 날짜 순으로 정렬합니다.
2. Top Headlines 엔드포인트
Top Headlines
엔드포인트는 특정 카테고리나 국가의 상위 뉴스 기사를 제공합니다. 이 엔드포인트는 특정 트렌드나 주제의 주요 뉴스를 빠르게 확인할 때 유용합니다.
적용 가능한 옵션
- q: 검색할 키워드. —> 키워드만 적용되는거 같네요..
- category: 특정 카테고리의 뉴스만 필터링. 예:
category='technology'
(지원 카테고리: ‘business’, ‘entertainment’, ‘general’, ‘health’, ‘science’, ‘sports’, ‘technology’) - country: 뉴스 기사의 국가 코드. 예:
country='us'
(The 2-letter ISO 3166-1 code of the country you want to get headlines for. Possible options:us
. Note: you can’t mix this param with thesources
param.) - sources: 특정 뉴스 소스만 필터링. 예:
sources='bbc-news'
- pageSize: 한 페이지에 표시할 기사 수 (최대 100).
- page: 페이지 번호.
Top Headlines 예제 코드
from newsapi import NewsApiClient
api = NewsApiClient(api_key='YOUR_API_KEY_HERE')
# 'AI' 키워드를 포함한 기술 카테고리의 주요 뉴스 검색 (Top Headlines)
top_headlines = api.get_top_headlines(q='AI',
category='technology',
country='us',
page_size=5)
# 결과 출력
for article in top_headlines['articles']:
print(f"제목: {article['title']}")
print(f"링크: {article['url']}")
print(f"출판 날짜: {article['publishedAt']}")
print(f"설명: {article['description']}")
print("\n" + "-"*50 + "\n")
이 코드는 미국의 기술 카테고리에서 AI
키워드를 포함한 상위 뉴스를 검색합니다. category
와 country
옵션을 사용하여 특정 주제와 국가의 상위 뉴스를 필터링할 수 있습니다.
Everything vs Top Headlines 비교
- Everything: 전 세계의 모든 뉴스 기사를 검색하며, 더 정밀한 검색과 다양한 필터링이 가능합니다.
- 사용 예시: 특정 키워드로 전 세계 모든 기사를 검색하거나, 특정 기간 동안 출판된 뉴스 기사를 찾고 싶을 때 유용합니다.
- Top Headlines: 주요 뉴스 헤드라인만을 필터링하여 검색하며, 특정 국가나 카테고리에 대한 트렌드를 파악할 때 적합합니다.
- 사용 예시: 최신 주요 뉴스를 빠르게 파악하고, 특정 국가나 카테고리 내에서 상위 뉴스만 보고 싶을 때 유용합니다.
두 엔드포인트를 적절히 활용하면 다양한 목적에 맞게 뉴스를 수집하고 분석할 수 있습니다.
결론
이번 포스팅에서는 NewsAPI를 활용하여 Python으로 AI 관련 뉴스를 자동으로 수집하는 방법을 알아보았습니다. NewsAPI는 여러 가지 옵션을 제공하여 사용자가 원하는 형태로 뉴스를 검색하고 정렬할 수 있어 매우 유용합니다. 특히 기술 발전이 빠르게 이루어지는 AI 분야에서는 이런 자동화된 뉴스 수집 도구가 큰 도움이 될 것입니다. 다양한 키워드와 옵션을 활용하여 자신만의 맞춤형 뉴스 수집기를 만들어 보시기 바랍니다.
참고자료
- NewsAPI 공식 문서 - https://newsapi.org/docs
- Python NewsAPI GitHub - https://github.com/mattlisiv/newsapi-python
댓글남기기