728x90
반응형
들어가며
뉴스는 정보를 얻는 가장 빠른 통로입니다. 특히 실시간 뉴스는 사회 전반의 흐름을 읽는 데 매우 중요한 자료가 되죠. 하지만 뉴스 페이지를 직접 방문해서 일일이 확인하는 건 매우 비효율적입니다.
이번 글에서는 파이썬을 활용해서 네이버 실시간 뉴스 타이틀을 자동으로 수집하는 방법을 소개합니다. 이 과정에서 requests, BeautifulSoup, Selenium까지 웹 크롤링의 주요 도구를 차근차근 사용해봅니다.
왜 웹 크롤링이 필요할까?
- 정보 자동 수집: 반복적으로 수집해야 하는 데이터가 있을 때 매우 유용합니다.
- 데이터 기반 분석: 뉴스 키워드 분석, 여론 흐름 파악 등에 활용 가능
- 업무 효율화: 트렌드 리포트 자동화, 경쟁사 모니터링, 키워드 추적 등 실무에 활용할 수 있습니다.
어떤 상황에서 사용할 수 있을까?
- 매일 아침 주요 뉴스 키워드를 수집해 팀에게 이메일로 전송하고 싶을 때
- 특정 주제(예: 인공지능, 부동산)에 대한 기사만 수집해서 DB로 저장하고 싶을 때
- 경쟁사 관련 키워드나 이슈가 있는지 모니터링하고 싶을 때
1. 라이브러리 설치하기
pip install requests beautifulsoup4 selenium
Selenium을 사용하는 경우 크롬 드라이버도 필요합니다. https://chromedriver.chromium.org/downloads 에서 버전에 맞는 드라이버를 설치하세요.
2. requests + BeautifulSoup로 뉴스 타이틀 가져오기 (정적 크롤링)
import requests
from bs4 import BeautifulSoup
url = 'https://news.naver.com/main/ranking/popularDay.naver'
headers = {'User-Agent': 'Mozilla/5.0'}
response = requests.get(url, headers=headers)
soup = BeautifulSoup(response.text, 'html.parser')
# 뉴스 타이틀 추출 (구조는 시기에 따라 변경될 수 있음)
titles = soup.select('div.rankingnews_box a.rankingnews_link')
for idx, title in enumerate(titles[:10]):
print(f'{idx+1}. {title.text.strip()}')
3. Selenium으로 더 복잡한 동적 페이지 처리하기
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By
import time
options = Options()
options.add_argument('--headless')
driver = webdriver.Chrome(options=options)
url = 'https://news.naver.com/main/ranking/popularDay.naver'
driver.get(url)
time.sleep(2) # 페이지 로딩 대기
elements = driver.find_elements(By.CLASS_NAME, 'rankingnews_link')
for i, elem in enumerate(elements[:10]):
print(f'{i+1}. {elem.text}')
driver.quit()
4. 크롤링 자동화 팁
- 스케줄러 등록: cron 또는 Windows 작업 스케줄러로 자동화
- 로그 저장: 수집한 데이터를 log.txt 또는 csv로 저장
- 메일 발송 연동: smtplib으로 매일 뉴스 요약 전송 가능
5. 정리하며
웹 크롤링은 단순한 자동화 이상의 가치가 있습니다. 원하는 정보를 정확하게 수집하고, 이를 가공해 실질적인 의사결정에 활용할 수 있기 때문입니다.
특히 뉴스는 시시각각 바뀌기 때문에, 자동화 없이는 시의성을 놓치기 쉽습니다. 본 예제처럼 간단한 코드로도 실시간 뉴스 수집 → 가공 → 활용의 사이클을 만들어낼 수 있습니다.
처음엔 어려울 수 있지만, 작은 크롤링 프로젝트부터 시도해보시길 바랍니다.
728x90
반응형
'개발 > Python' 카테고리의 다른 글
[Python] 파이썬으로 고전 게임 슈팅 게임 만들기: 총알, 적, 그리고 리듬감 (0) | 2025.04.22 |
---|---|
[Python] 파이썬으로 고전 게임 벽돌깨기 만들기 (0) | 2025.04.22 |
[Python] 파이썬으로 고전 게임 스네이크 게임 만들기 - 삽질의 연속 ㅠㅠ (1) | 2025.04.22 |
[Python] 파이썬으로 고전 게임 '테트리스' 만들기 – 직접 만들어보며 배운 시행착오의 기록 (3) | 2025.04.21 |
[Python] 파이썬으로 엑셀 파일 한 번에 정리하기 (0) | 2025.04.20 |