비트코인 6000피 돌파 및 배당 뉴스, 매일 자동 크롤링 요약 파이프라인 구축기
안녕하세요! 요즘 비트코인이 6000피를 돌파했다는 소식부터 SK하이닉스, 삼성 배당 관련 뉴스까지, 쏟아지는 정보의 홍수 속에서 중요한 정보를 놓치지 않고 빠르게 파악하는 것이 정말 중요해졌습니다. 그래서 오늘은 제가 직접 구축한 뉴스 크롤링 파이프라인을 소개하고, 어떻게 매일 쏟아지는 뉴스들을 자동화하여 요약하고 알림까지 받을 수 있는지 그 과정을 상세하게 공유하려고 합니다. 복잡해 보일 수 있지만, 차근차근 따라오시면 누구나 자신만의 정보 획득 시스템을 만들 수 있습니다.
[AD_SLOT:top]
서론: '6000피 돌파', SK하이닉스, 삼성 배당 등 쏟아지는 뉴스의 시대

최근 금융 시장은 물론, IT 업계에서도 숨 가쁘게 새로운 소식들이 쏟아져 나오고 있습니다. 비트코인 가격의 급등, SK하이닉스의 괄목할 만한 성장, 그리고 삼성의 배당 정책 변화까지, 하루가 멀다 하고 중요한 정보들이 쏟아지는 시대입니다. 이러한 정보의 홍수 속에서 개인 투자자나 특정 분야에 관심을 가진 사람들은 필요한 정보를 빠르게 캐치하고 분석하는 능력이 더욱 중요해졌습니다. 하지만 매일같이 쏟아지는 뉴스를 일일이 확인하고 요약하는 것은 시간적으로나 정신적으로 매우 소모적인 일입니다.
저 역시 이러한 어려움을 느껴왔고, 그래서 효율적으로 정보를 습득할 수 있는 방법을 고민하게 되었습니다. 다양한 방법들을 시도해 본 결과, 자동화된 뉴스 크롤링 파이프라인을 구축하는 것이 가장 효과적이라는 결론에 도달했습니다. 이 파이프라인을 통해 저는 원하는 정보를 자동으로 수집하고, 요약하여 알림까지 받을 수 있게 되었습니다. 이제부터 제가 구축한 파이프라인의 각 단계를 자세히 설명드리겠습니다.
뉴스 RSS 수집 및 필터링 자동화 방법

가장 먼저 해야 할 일은 뉴스를 수집하는 것입니다. 다양한 뉴스 매체들이 RSS 피드를 제공하고 있기 때문에, 이를 활용하면 쉽게 뉴스 데이터를 수집할 수 있습니다. RSS (Really Simple Syndication)는 웹사이트의 업데이트 정보를 표준화된 형식으로 제공하는 기술입니다. 즉, RSS 피드를 구독하면 해당 웹사이트에 새로운 글이 올라올 때마다 알림을 받을 수 있습니다.
1. RSS 피드 주소 확보
가장 먼저 관심 있는 뉴스 매체의 RSS 피드 주소를 찾아야 합니다. 대부분의 웹사이트는 RSS 아이콘을 통해 쉽게 RSS 피드 주소를 확인할 수 있도록 제공하고 있습니다. 예를 들어, 특정 경제 뉴스 웹사이트의 RSS 피드 주소가 https://example.com/rss라고 가정해 보겠습니다.
2. RSS 크롤링 라이브러리 활용
파이썬에는 RSS 피드를 크롤링하는 데 유용한 라이브러리들이 많이 있습니다. 그중에서도 feedparser는 가장 널리 사용되는 라이브러리 중 하나입니다. feedparser를 사용하면 RSS 피드 주소로부터 뉴스 제목, 내용, 링크 등의 정보를 쉽게 추출할 수 있습니다.
import feedparser
# RSS 피드 URL
rss_url = "https://example.com/rss"
# RSS 피드 파싱
feed = feedparser.parse(rss_url)
# 뉴스 기사 정보 추출
for entry in feed.entries:
title = entry.title
link = entry.link
summary = entry.summary
print(f"제목: {title}")
print(f"링크: {link}")
print(f"요약: {summary}")
print("-" * 30)
3. 키워드 기반 필터링
수집된 뉴스 기사 중에서 원하는 정보만 추출하기 위해 키워드 기반 필터링을 적용할 수 있습니다. 예를 들어, "비트코인", "SK하이닉스", "삼성 배당"과 같은 키워드를 사용하여 관련 뉴스만 필터링할 수 있습니다.
keywords = ["비트코인", "SK하이닉스", "삼성 배당"]
for entry in feed.entries:
title = entry.title
link = entry.link
summary = entry.summary
# 키워드 포함 여부 확인
if any(keyword in title or keyword in summary for keyword in keywords):
print(f"제목: {title}")
print(f"링크: {link}")
print(f"요약: {summary}")
print("-" * 30)
이러한 방식으로 RSS 피드를 크롤링하고 키워드 기반으로 필터링하면, 원하는 뉴스 정보만 효율적으로 수집할 수 있습니다.
[AD_SLOT:middle]
로컬 LLM Ollama를 활용한 빠르고 정확한 뉴스 요약
수집된 뉴스 기사를 일일이 읽고 요약하는 것은 여전히 번거로운 작업입니다. 따라서 저는 로컬 LLM (Large Language Model)인 Ollama를 활용하여 뉴스 기사를 자동으로 요약하는 방법을 선택했습니다. Ollama는 로컬 환경에서 LLM을 실행할 수 있도록 도와주는 도구로, 인터넷 연결 없이도 빠르고 안전하게 텍스트 요약 작업을 수행할 수 있습니다.
1. Ollama 설치 및 모델 다운로드
먼저 Ollama를 설치하고, 요약에 사용할 LLM 모델을 다운로드해야 합니다. Ollama 공식 웹사이트에서 운영체제에 맞는 설치 파일을 다운로드하여 설치할 수 있습니다. 그 후, 터미널에서 다음과 같은 명령어를 입력하여 원하는 모델을 다운로드합니다. 저는 주로 llama2 모델을 사용합니다.
ollama pull llama2
2. 파이썬 Ollama API 활용
Ollama를 파이썬 코드에서 사용하기 위해 Ollama API를 활용합니다. Ollama API를 사용하면 텍스트를 Ollama 모델에 전달하고, 요약된 결과를 쉽게 얻을 수 있습니다.
import ollama
def summarize_text(text):
"""Ollama를 사용하여 텍스트 요약"""
response = ollama.generate(model='llama2', prompt=f'Summarize this: {text}')
return response['response']
# 뉴스 기사 내용
news_article = """
최근 비트코인이 6000피를 돌파하며 ... (뉴스 기사 내용)
"""
# 뉴스 기사 요약
summary = summarize_text(news_article)
print(f"요약: {summary}")
3. 요약 결과 개선
Ollama의 요약 결과는 모델의 성능과 입력 텍스트의 품질에 따라 달라질 수 있습니다. 필요에 따라 프롬프트 엔지니어링을 통해 요약 결과를 개선할 수 있습니다. 예를 들어, 요약의 길이나 스타일을 지정하는 프롬프트를 추가할 수 있습니다.
def summarize_text(text, length='short'):
"""Ollama를 사용하여 텍스트 요약 (길이 지정)"""
prompt = f'Summarize this in {length} sentences: {text}'
response = ollama.generate(model='llama2', prompt=prompt)
return response['response']
# 짧은 요약
short_summary = summarize_text(news_article, length='three')
print(f"짧은 요약: {short_summary}")
Ollama를 활용하면 뉴스 기사를 빠르고 정확하게 요약할 수 있으며, 로컬 환경에서 실행되기 때문에 개인 정보 보호에도 유리합니다.
Slack/Discord 및 DB 연동을 통한 자동 알림 시스템 구축
자동으로 뉴스를 수집하고 요약하는 것만으로는 충분하지 않습니다. 중요한 정보를 놓치지 않도록 자동 알림 시스템을 구축하는 것이 중요합니다. 저는 Slack과 Discord를 통해 알림을 받고, 데이터베이스에 정보를 저장하여 관리하고 있습니다.
1. Slack 또는 Discord 봇 설정
Slack 또는 Discord에 봇을 설정하여 알림을 보낼 수 있습니다. 각 플랫폼에서 봇을 생성하고, 봇 토큰을 확보해야 합니다. 봇 토큰은 봇을 프로그래밍적으로 제어하는 데 사용되는 비밀 키입니다.
2. 파이썬 Slack/Discord API 활용
Slack 또는 Discord API를 사용하여 봇을 통해 메시지를 보낼 수 있습니다. 파이썬에는 Slack API를 위한 slack_sdk 라이브러리와 Discord API를 위한 discord.py 라이브러리가 있습니다.
# Slack 알림 전송 예시
from slack_sdk import WebClient
# Slack 봇 토큰
slack_token = "YOUR_SLACK_BOT_TOKEN"
client = WebClient(token=slack_token)
def send_slack_message(channel, message):
"""Slack 채널에 메시지 전송"""
client.chat_postMessage(channel=channel, text=message)
# Discord 알림 전송 예시
import discord
# Discord 봇 토큰
discord_token = "YOUR_DISCORD_BOT_TOKEN"
client = discord.Client(intents=discord.Intents.default())
@client.event
async def on_ready():
print(f'{client.user} has connected to Discord!')
async def send_discord_message(channel_id, message):
"""Discord 채널에 메시지 전송"""
channel = client.get_channel(int(channel_id))
await channel.send(message)
# 봇 실행 (Discord)
# client.run(discord_token)
3. 데이터베이스 연동
수집된 뉴스 기사와 요약 정보를 데이터베이스에 저장하면, 나중에 필요할 때 쉽게 검색하고 분석할 수 있습니다. 저는 주로 SQLite, PostgreSQL, MySQL 등의 데이터베이스를 사용합니다. 파이썬에는 이러한 데이터베이스와 연동하기 위한 다양한 라이브러리들이 있습니다.
import sqlite3
# SQLite 데이터베이스 연결
conn = sqlite3.connect('news.db')
cursor = conn.cursor()
# 테이블 생성
cursor.execute('''
CREATE TABLE IF NOT EXISTS news (
title TEXT,
link TEXT,
summary TEXT
)
''')
def save_news(title, link, summary):
"""뉴스 정보를 데이터베이스에 저장"""
cursor.execute("INSERT INTO news (title, link, summary) VALUES (?, ?, ?)", (title, link, summary))
conn.commit()
# 뉴스 정보 저장
# save_news(title, link, summary)
# 데이터베이스 연결 종료
# conn.close()
4. 자동화 스크립트 실행
마지막으로, 위에서 설명한 모든 단계를 자동화하는 스크립트를 작성하고, 스케줄러를 사용하여 주기적으로 실행합니다. 예를 들어, cron (Linux) 또는 Task Scheduler (Windows)를 사용하여 매일 아침 9시에 스크립트가 실행되도록 설정할 수 있습니다.
결론: 정보의 비대칭성을 극복하는 나만의 파이프라인
지금까지 제가 구축한 뉴스 크롤링 파이프라인을 상세하게 설명드렸습니다. 이 파이프라인을 통해 저는 매일 쏟아지는 뉴스 속에서 필요한 정보를 빠르게 수집하고 요약하여 알림까지 받을 수 있게 되었습니다. 정보의 비대칭성을 극복하고, 더 나은 의사 결정을 내리는 데 큰 도움이 되고 있습니다.
핵심 요약:
- RSS 크롤링:
feedparser라이브러리를 사용하여 뉴스 RSS 피드를 수집합니다. - 키워드 필터링: 원하는 키워드를 기반으로 뉴스 기사를 필터링합니다.
- Ollama 요약: 로컬 LLM인 Ollama를 사용하여 뉴스 기사를 자동으로 요약합니다.
- 자동 알림: Slack 또는 Discord 봇을 통해 요약된 뉴스를 알림으로 받습니다.
- 데이터베이스 저장: 수집된 뉴스 기사와 요약 정보를 데이터베이스에 저장합니다.
이 글을 통해 여러분도 자신만의 뉴스 크롤링 파이프라인을 구축하고, 정보의 홍수 속에서 필요한 정보를 효율적으로 관리할 수 있기를 바랍니다. 궁금한 점이 있다면 언제든지 댓글로 질문해주세요!
[AD_SLOT:bottom]
🛒 오늘의 추천 상품
파이썬 웹 크롤링 & 자동화 : 30가지 프로젝트로 배우는
뉴스 크롤링 파이프라인 구축에 대한 관심은 파이썬 크롤링 및 자동화에 대한 학습 욕구로 이어질 가능성이 높습니다.
크롤링 자동화 마스터하기이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.
만약 파이썬 개발 환경 구축에 어려움을 느끼신다면, 간편하게 사용할 수 있는 클라우드 기반 개발 환경을 추천드립니다. 예를 들어, Google Colab이나 AWS Cloud9과 같은 서비스를 이용하면 별도의 설치 없이도 웹 브라우저에서 바로 코딩을 시작할 수 있습니다.
💬 댓글 0