파이썬 마법 학교 50강: 멈추지 않는 수집기! ‘무한 페이지’ 크롤링 마법

안녕하세요! 가족과 함께하는 스마트 라이프입니다. 드디어 크롤링 탐험대의 마지막 관문인 50강에 도착했습니다! 지금까지는 한 페이지의 정보만 가져왔죠? 하지만 진짜 고수는 수십 페이지 뒤에 숨겨진 보물까지 몽땅 가져온답니다. 오늘은 ‘반복문’을 이용해 멈추지 않고 정보를 수집하는 마법을 배워볼게요!

파이썬 마법 학교 50강: 멈추지 않는 수집기! ‘무한 페이지’ 크롤링 마법

1. 페이지 넘기기는 ‘책장 넘기기’와 같아요

우리가 책을 읽을 때 1쪽을 다 읽으면 2쪽으로 넘기죠? 인터넷 주소(URL)도 자세히 보면 규칙이 있어요. 보통 주소 끝에 page=1, page=2 같은 숫자가 붙어있답니다. 이 숫자만 쏙쏙 바꿔주면 파이썬 비서가 알아서 다음 페이지로 넘어가 정보를 수집해요.

2. 무한 수집의 핵심: for 반복문

우리가 예전에 배웠던 for 마법을 기억하시나요? 이걸 크롤링 주문과 합치면 무시무시한 수집기가 탄생해요!

  • range(1, 11): “1페이지부터 10페이지까지 탐험해!”
  • f-string: “주소 끝에 페이지 번호를 하나씩 바꿔서 끼워줘!”
  • time.sleep: “너무 빨리 가져오면 사이트가 놀라니까 1초씩 쉬면서 해!”

3. 실전 연습: 여러 페이지의 뉴스 제목 모으기

1페이지부터 3페이지까지의 뉴스 제목을 한꺼번에 가져오는 코드를 짜봅시다!

import requests
from bs4 import BeautifulSoup
import time

# 1. 1페이지부터 3페이지까지 반복하기
for page_num in range(1, 4):
    # 주소 뒤에 페이지 번호를 합쳐요!
    url = f"https://search.naver.com/search.naver?query=파이썬&start={(page_num-1)*10 + 1}"
    
    response = requests.get(url)
    soup = BeautifulSoup(response.text, 'html.parser')
    
    # 2. 뉴스 제목들 찾기 (예시 태그입니다)
    titles = soup.select(".news_tit")
    
    print(f"--- 📑 {page_num}페이지 탐험 중 ---")
    for title in titles:
        print(f"💎 보물 발견: {title.text}")
    
    # 3. 사이트를 배려하는 1초 휴식 마법
    time.sleep(1)

print("\n✅ 모든 페이지의 보물을 수집했습니다!")
파이썬 마법 학교 50강: 멈추지 않는 수집기! ‘무한 페이지’ 크롤링 마법

4. 진정한 데이터 수집가의 마음가짐

수백 개의 정보를 한 번에 가져오는 건 아주 강력한 힘이에요. 하지만 힘이 센 만큼 조심해야 할 것도 있죠.

  • 배려하기: 너무 빨리 정보를 요청하면 서버가 힘들어요. 꼭 time.sleep()을 써주세요.
  • 저작권 지키기: 가져온 정보는 나만 보거나 공부용으로만 써야 해요.
  • 정확한 주소 찾기: 페이지가 넘어갈 때 주소 창의 숫자가 어떻게 변하는지 관찰하는 눈이 필요해요!

5. 가족과 함께하는 ‘우리 집 신문 만들기’

아이와 함께 “우리가 가장 궁금한 소식 5페이지 분량 모으기” 미션을 수행해 보세요. “좋아하는 게임 업데이트 소식”, “우리가 가고 싶은 여행지 정보” 등을 키워드로 넣어 여러 페이지를 크롤링하는 거예요. 수집된 수십 개의 제목을 보며 아이는 ‘컴퓨터 한 대가 수백 명의 일을 대신할 수 있다’는 자동화의 가치를 경험하게 됩니다. 아이가 직접 만든 ‘자동 수집기’가 출력하는 결과물을 보며 함께 박수 쳐주세요!

마치며: 이제 세상을 데이터로 읽는 마법사입니다

축하합니다! 6기 크롤링 탐험대 시리즈를 모두 마쳤습니다. 이제 여러분은 인터넷이라는 거대한 바다에서 원하는 정보를 그물로 건져 올릴 수 있는 마법사가 되었어요. 다음 연재부터는 드디어 [파이썬 마법 학교 7기: 세상을 그리는 ‘데이터 시각화’] 시리즈로 수집한 보물들을 멋진 그래프로 그려보는 시간을 갖겠습니다!