파이썬으로 웹 크롤링 고급편 6강, 마지막 강의입니다!
이번 강의에서는 지금까지 배운 기술들을 총동원해, 카테고리를 입력하면 뉴스나 상품 정보를 자동으로 수집하고, 이미지 파일까지 함께 저장해주는 실전 미니 프로젝트를 진행해보겠습니다.
엑셀 저장 기능까지 포함되므로, 크롤링 결과를 활용하기도 훨씬 수월해집니다.
💡 프로젝트 개요
- 입력한 카테고리에 따라 네이버 뉴스에서 기사 정보 수집
- 제목, 링크, 썸네일 이미지 수집
- 수집한 결과를 엑셀(.xlsx)로 저장
1. 필요한 라이브러리 설치
pip install requests beautifulsoup4 openpyxl
2. 네이버 뉴스 카테고리 URL 구조
– 정치: 100 / 경제: 101 / IT/과학: 105
https://news.naver.com/main/main.naver?mode=LSD&mid=shm&sid1=카테고리번호
3. 코드 구현 – 뉴스 크롤링 + 엑셀 저장
import requests
from bs4 import BeautifulSoup
import openpyxl
import os
category_map = {'정치': '100', '경제': '101', 'IT/과학': '105'}
category = input("카테고리 입력 (정치/경제/IT/과학): ")
sid = category_map.get(category, '100')
url = f"https://news.naver.com/main/main.naver?mode=LSD&mid=shm&sid1={sid}"
headers = {"User-Agent": "Mozilla/5.0"}
res = requests.get(url, headers=headers)
soup = BeautifulSoup(res.text, 'html.parser')
items = soup.select(".sh_text_headline")
os.makedirs("thumbnails", exist_ok=True)
wb = openpyxl.Workbook()
ws = wb.active
ws.append(["제목", "링크"])
for idx, item in enumerate(items[:10]):
a_tag = item.select_one("a")
title = a_tag.text.strip()
link = a_tag['href']
ws.append([title, link])
wb.save("뉴스_리스트.xlsx")
4. (선택) 이미지 썸네일 저장
img_tags = soup.select("img")
for i, img in enumerate(img_tags[:10]):
src = img.get("src")
if src and src.startswith("http"):
img_data = requests.get(src).content
with open(f"thumbnails/thumb_{i}.jpg", "wb") as f:
f.write(img_data)
5. 실전 확장 아이디어
- 검색 키워드로 뉴스/블로그 자동 수집기 제작
- 카페 글, 유튜브 썸네일, 쇼핑몰 가격 등 수집 자동화
- pandas 활용해 데이터 분석까지 연결 가능
🎓 마무리하며
총 6강에 걸쳐 웹 크롤링 고급 기술을 학습하며, 다음을 익혔습니다:
- Header 및 User-Agent 세팅
- 로그인 세션 유지
- AJAX JSON 응답 처리
- Selenium을 활용한 브라우저 자동화
- 파일, 이미지, 썸네일 다운로드
- 엑셀 저장을 통한 실전 활용
이제 여러분은 파이썬으로 실전형 웹 크롤러를 만들 수 있는 역량을 갖추셨습니다.
앞으로는 다양한 데이터 수집 프로젝트에 도전해보세요!
이 시리즈는 웹 자동화와 크롤링 기술을 실전 중심으로 학습하는 고급 과정입니다. 다음은 AI + 크롤링 프로젝트 또는 웹 자동화 챗봇 연계로 확장해보는 건 어떨까요?