파이썬 웹 크롤링 입문 4강 – 여러 페이지에서 뉴스 제목 반복 수집하기

파이썬 웹 크롤링 입문 4강에 오신 것을 환영합니다!

이번 강의에서는 **여러 페이지에 걸쳐 있는 뉴스 데이터를 반복적으로 크롤링하는 방법**을 배웁니다.

예를 들어 뉴스 목록이 페이지별로 나뉘어 있는 경우, 한 페이지에 있는 데이터만이 아니라 **2페이지, 3페이지, 4페이지… 여러 페이지를 자동으로 탐색하면서** 제목을 수집할 수 있어야 진정한 크롤러라고 할 수 있겠죠?

1. 다중 페이지 크롤링의 핵심: URL 패턴 파악

여러 페이지를 순회하려면 먼저 각 페이지의 URL 구조(패턴)를 파악해야 합니다.

예를 들어, 네이버 뉴스 랭킹 페이지:
https://news.naver.com/main/ranking/popularDay.naver?mid=etc&date=20250330&page=1

이렇게 페이지 번호가 `page=1`, `page=2`처럼 뒤에 붙는 구조라면, 반복문으로 숫자만 바꿔가며 접근하면 됩니다.

2. 실습: 페이지별 뉴스 제목 크롤링

✅ 필요한 라이브러리:
“`python
import requests
from bs4 import BeautifulSoup
import time
“`

✅ 코드 작성:
“`python
def crawl_news_titles(pages=3):
for page in range(1, pages + 1):
print(f”\n[ 페이지 {page} ]”)
url = f”https://news.naver.com/main/ranking/popularDay.naver?mid=etc&date=20250330&page={page}”
res = requests.get(url)
soup = BeautifulSoup(res.text, “html.parser”)

links = soup.find_all(“a”, class_=”list_title”) # 기사 제목 링크 추정 클래스명

if not links:
print(“데이터가 없습니다.”)
continue

for i, link in enumerate(links[:10]):
print(f”{i+1}. {link.get_text(strip=True)}”)

time.sleep(1) # 서버에 부담을 주지 않기 위해 1초 대기
“`

✅ 실행:
“`python
crawl_news_titles(pages=3)
“`

위 코드는 1~3페이지까지 접근하면서 각 페이지에서 최대 10개의 뉴스 제목을 출력합니다.

※ 실제 크롤링할 때는 HTML 구조(클래스명, 태그 등)를 반드시 개발자 도구(F12)로 직접 확인해야 합니다.

3. 딜레이와 예외 처리의 중요성

크롤링 시 다음을 꼭 고려하세요:
– 너무 빠르게 요청하면 IP 차단 위험
– `time.sleep()`으로 간격 주기
– `try-except`로 오류 발생 시 프로그램 멈추지 않게 방지

예시:
“`python
try:
res = requests.get(url)
res.raise_for_status()
except Exception as e:
print(“요청 중 오류 발생:”, e)
continue
“`

4. 저장까지 함께 해보기

원한다면 크롤링한 제목들을 리스트에 저장하고, CSV로 저장하면 됩니다.
“`python
all_titles = []

for page in range(1, 4):
url = f”https://news.naver.com/main/ranking/popularDay.naver?mid=etc&date=20250330&page={page}”
res = requests.get(url)
soup = BeautifulSoup(res.text, “html.parser”)

links = soup.find_all(“a”, class_=”list_title”)
for link in links:
title = link.get_text(strip=True)
all_titles.append(title)
“`

📌 오늘의 요약

  • 여러 페이지를 크롤링하려면 URL 패턴을 반복문으로 제어
  • requests와 BeautifulSoup로 페이지마다 접근
  • time.sleep()으로 서버 부담 완화, 예외 처리로 안정성 확보

📘 다음 강의 예고

5강: 동적 웹사이트 크롤링 – JavaScript로 만들어진 사이트 다루기 (Selenium 기초)
다음 시간엔 일반적인 requests로는 불가능한 **JavaScript 기반 웹사이트**를 크롤링하는 방법을 다룹니다. Selenium을 설치하고 실제 로그인, 클릭, 입력까지 자동화해보는 실습으로 마무리합니다!

이 강의는 파이썬 웹 크롤링 입문자를 위한 연재 시리즈입니다. 매주 새로운 강의로 업데이트됩니다.