왜 뉴스기사 크롤러가 필요할까요?
매일 쏟아지는 수많은 뉴스 중에서 내게 필요한 정보만 골라내는 것은 시간 소모적인 작업입니다. 특정 키워드가 포함된 뉴스, 관심 분야의 최신 동향, 투자 정보 등을 매일 수동으로 검색하고 정리하는 대신, 자동화된 크롤러를 활용하면 이 모든 과정을 자동으로 처리할 수 있습니다.
뉴스기사 크롤러는 다음과 같은 상황에서 특히 유용합니다:
- 특정 키워드가 포함된 뉴스를 매일 모니터링하고 싶을 때
- 여러 뉴스 사이트에서 동일한 주제의 기사를 취합하고 싶을 때
- 투자나 마케팅 결정을 위한 시장 동향을 파악하고 싶을 때
- 경쟁사나 산업 동향을 효율적으로 추적하고 싶을 때
이 가이드에서는 프로그래밍 지식이 없는 초보자도 쉽게 따라할 수 있는 뉴스기사 크롤러 만들기 방법을 알아보겠습니다.
초보자를 위한 스프레드시트 기반 뉴스 크롤러
1. Google 스프레드시트와 IMPORTXML 함수 활용하기
프로그래밍 지식 없이도 Google 스프레드시트의 IMPORTXML
함수를 사용하면 간단한 웹 크롤링이 가능합니다.
단계별 가이드:
- 새 Google 스프레드시트 생성하기
- Google Drive에 접속하여 ‘새로 만들기’ > ‘Google 스프레드시트’를 선택합니다.
- 크롤링할 뉴스 사이트 선정하기
- 예: 네이버 뉴스, 다음 뉴스, 조선일보, 중앙일보 등
- IMPORTXML 함수 사용하기
=IMPORTXML("웹페이지URL", "XPath 쿼리")
- 실제 예시: 네이버 경제 뉴스 타이틀 가져오기
=IMPORTXML("https://news.naver.com/main/main.naver?mode=LSD&mid=shm&sid1=101", "//div[@class='cluster_text']/a")
네이버와 같은 일부 사이트는 크롤링을 제한할 수 있습니다. 이 경우 RSS 피드를 활용하는 것이 더 효과적일 수 있습니다.
2. IMPORTFEED 함수로 RSS 피드 활용하기
많은 뉴스 사이트는 RSS 피드를 제공합니다. IMPORTFEED
함수를 사용하면 이러한 피드에서 쉽게 정보를 가져올 수 있습니다.
단계별 가이드:
- RSS 피드 URL 찾기
- 예: 경향신문 RSS 피드 URL:
http://www.khan.co.kr/rss/rssdata/total_news.xml
- 예: 경향신문 RSS 피드 URL:
- IMPORTFEED 함수 사용하기
=IMPORTFEED("RSS 피드 URL", "항목", false, 숫자)
- 실제 예시: 경향신문 최신 기사 10개 가져오기
=IMPORTFEED("http://www.khan.co.kr/rss/rssdata/total_news.xml", "items", false, 10)
- 특정 정보만 추출하기
- 제목만 가져오기:
=IMPORTFEED("RSS URL", "items title", false, 10)
- 링크만 가져오기:
=IMPORTFEED("RSS URL", "items url", false, 10)
- 제목만 가져오기:
3. Apps Script로 자동화 기능 강화하기
Google 스프레드시트의 Apps Script 기능을 활용하면 더 강력한 자동화가 가능합니다. 코딩 경험이 없어도 간단한 스크립트를 복사-붙여넣기 하는 방식으로 활용할 수 있습니다.
단계별 가이드:
- 스프레드시트 메뉴에서 ‘확장 프로그램’ > ‘Apps Script’ 선택
- 다음 코드를 복사-붙여넣기 javascript
function fetchNews() { var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); // 검색할 키워드 (A1 셀에서 가져옴) var keyword = sheet.getRange("A1").getValue(); // 네이버 뉴스 검색 결과 URL var url = "https://search.naver.com/search.naver?where=news&query=" + encodeURIComponent(keyword); var response = UrlFetchApp.fetch(url); var html = response.getContentText(); // 뉴스 제목 추출 (간단한 방식, 실제로는 정규식이나 파싱 라이브러리 필요) var titleStart = html.indexOf('<a href="', html.indexOf('news_tit')); var titleEnd = html.indexOf('</a>', titleStart); var title = html.substring(titleStart, titleEnd); // 결과를 B2 셀에 기록 sheet.getRange("B2").setValue(title); }
- 트리거 설정하기
- ‘트리거’ 메뉴 선택
- ‘트리거 추가’ 클릭
- 함수 선택:
fetchNews
- 이벤트 소스:
시간 기반
- 시간 간격 선택:
매일
(또는 원하는 간격) - 저장
이제 설정한 시간 간격마다 자동으로 뉴스를 가져와 스프레드시트에 기록합니다.
중급자를 위한 확장 옵션
1. Google Data Studio로 시각화하기
스프레드시트에 수집된 뉴스 데이터를 Google Data Studio와 연동하면 멋진 대시보드를 만들 수 있습니다.
- Google Data Studio에 접속
- ‘보고서 만들기’ 클릭
- 데이터 소스로 Google 스프레드시트 선택
- 원하는 차트와 테이블로 뉴스 트렌드 시각화
2. Google Forms와 연동하여 알림 시스템 구축하기
특정 키워드가 포함된 뉴스가 발견되면 이메일 알림을 받을 수 있는 시스템을 구축할 수 있습니다.
javascriptfunction sendAlertEmail() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var keyword = sheet.getRange("A1").getValue();
var latestNews = sheet.getRange("B2").getValue();
if (latestNews.indexOf(keyword) !== -1) {
MailApp.sendEmail({
to: "your.email@example.com",
subject: "키워드 알림: " + keyword,
body: "다음 뉴스 기사에서 키워드가 발견되었습니다:\n\n" + latestNews
});
}
}
이 함수를 fetchNews()
함수 다음에 호출되도록 설정하면, 관심 키워드가 포함된 뉴스가 발견될 때마다 이메일 알림을 받을 수 있습니다.
고급 자동화 옵션 (약간의 기술적 지식 필요)
1. 구글 코랩(Google Colab)으로 더 강력한 크롤링
Google Colab은 무료로 사용할 수 있는 클라우드 기반 Python 환경입니다. 약간의 Python 지식이 있다면 더 강력한 크롤링이 가능합니다.
python# 간단한 뉴스 크롤러 예제
import requests
from bs4 import BeautifulSoup
import pandas as pd
from google.colab import auth
import gspread
from oauth2client.client import GoogleCredentials
# 구글 인증
auth.authenticate_user()
gc = gspread.authorize(GoogleCredentials.get_application_default())
# 크롤링할 뉴스 사이트
url = 'https://news.naver.com/main/main.naver?mode=LSD&mid=shm&sid1=101'
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')
# 뉴스 제목 추출
news_titles = soup.select('div.cluster_text a')
titles = [title.text.strip() for title in news_titles]
# 데이터프레임 생성
df = pd.DataFrame({'뉴스 제목': titles})
# 스프레드시트에 저장
sh = gc.open('뉴스 크롤러 결과')
worksheet = sh.sheet1
worksheet.update([df.columns.values.tolist()] + df.values.tolist())
이 코드를 Google Colab에서 실행하면 네이버 경제 뉴스의 제목을 크롤링하여 구글 스프레드시트에 저장합니다.
2. 자동화 플랫폼 활용하기
프로그래밍 지식이 제한적이라면 다음과 같은 자동화 플랫폼을 활용할 수 있습니다:
IFTTT (If This Then That)
- IFTTT에 가입
- ‘새 애플릿 만들기’ 클릭
- ‘If This’에서 ‘RSS Feed’ 선택
- ‘새 항목’ 트리거 선택 및 RSS URL 입력
- ‘Then That’에서 ‘Google Sheets’ 선택
- ‘행 추가’ 액션 선택 및 설정
- 완료 및 저장
이제 RSS 피드에 새 기사가 등록될 때마다 자동으로 구글 스프레드시트에 추가됩니다.
Zapier
Zapier는 IFTTT보다 더 강력한 기능을 제공하는 자동화 플랫폼입니다.
- Zapier에 가입
- ‘새 Zap 만들기’ 클릭
- 트리거로 ‘RSS’ 선택
- 액션으로 ‘Google Sheets’ 선택
- 트리거 및 액션 세부 설정
- 테스트 및 활성화
Zapier는 유료 서비스이지만, 무료 플랜으로도 기본적인 자동화가 가능합니다.
뉴스 크롤러 운영 시 주의사항
1. 저작권 및 법적 고려사항
뉴스 기사를 크롤링할 때는 저작권법을 준수해야 합니다:
- 개인 사용 목적으로만 활용하기: 크롤링한 콘텐츠를 재배포하거나 상업적으로 활용하지 마세요.
- 출처 명시하기: 데이터를 인용할 때는 반드시 출처를 밝히세요.
- 로봇 배제 표준(robots.txt) 준수하기: 사이트에서 크롤링을 허용하지 않는다면 존중해야 합니다.
2. 기술적 제한사항
- 크롤링 빈도 제한: 너무 자주 크롤링하면 사이트에서 IP를 차단할 수 있습니다.
- 구조 변경 대응: 웹사이트 구조가 변경되면 크롤러가 작동하지 않을 수 있으므로 정기적으로 확인이 필요합니다.
효과적인 뉴스 크롤러 운영 팁
- 키워드 최적화: 너무 일반적인 키워드는 피하고, 구체적인 키워드를 사용하세요.
- 정기적인 유지보수: 크롤러가 제대로 작동하는지 주기적으로 확인하세요.
- 데이터 정리 자동화: TRIM(), CLEAN() 등의 스프레드시트 함수를 활용해 데이터를 정리하세요.
- 중복 제거: UNIQUE() 함수로 중복 기사를 제거하세요.
결론: 나만의 뉴스 크롤러로 정보 홍수 속에서 효율적으로 헤엄치기
뉴스 크롤러는 매일 쏟아지는 정보의 바다에서 꼭 필요한 정보만 효율적으로 수집할 수 있는 강력한 도구입니다. 이 가이드에서 소개한 방법들을 통해 프로그래밍 지식이 없는 초보자도 자신만의 뉴스 크롤러를 구축할 수 있습니다.
처음에는 Google 스프레드시트의 IMPORTXML이나 IMPORTFEED 함수로 시작하여, 점차 Apps Script나 외부 자동화 도구로 확장해 나가는 것을 추천합니다. 자신의 필요와 기술 수준에 맞게 단계적으로 발전시켜 나간다면, 곧 정보 홍수 속에서도 필요한 정보만 정확하게 수집하는 효율적인 시스템을 갖출 수 있을 것입니다.
혼자서 제작이 어렵다면?