웹 크롤링이란 무엇인가?

IT 지식 / Python·2026.09.02
PYTHON WEB CRAWLING
웹 크롤링이란 무엇인가?
웹사이트의 정보를 자동으로 수집하는 웹 크롤링의 개념을 이해하고
파이썬으로 간단한 웹 데이터를 가져오는 방법을 배워봅니다.
a computer screen with a bunch of code on it
1. 웹 크롤링이란?

인터넷에는 뉴스, 상품 정보, 주식 데이터, 날씨, 게시글 등 매우 많은 정보가 존재합니다.

이러한 정보를 사람이 웹사이트에 하나씩 접속해서 복사하려면 많은 시간과 노력이 필요합니다.

웹 크롤링(Web Crawling)은 프로그램이 웹사이트에 자동으로 접속하여 웹페이지의 정보를 수집하는 기술입니다.

💡 쉽게 생각하면

사람이 웹 브라우저를 열고 사이트에 접속하여 내용을 확인하는 일을 프로그램이 대신 수행하도록 만드는 것이라고 생각하면 됩니다.

1 웹사이트에 접속

파이썬 프로그램이 특정 웹 주소(URL)에 요청을 보냅니다.

2 웹페이지 내용 가져오기

서버로부터 HTML과 같은 웹페이지 데이터를 전달받습니다.

3 필요한 정보 찾기

가져온 HTML에서 제목, 가격, 링크, 글 내용 등 원하는 데이터를 찾아냅니다.

4 데이터 저장

수집한 정보를 CSV, Excel, 데이터베이스 등에 저장하여 분석하거나 다른 프로그램에서 활용할 수 있습니다.

2. 웹 크롤링과 웹 스크래핑

웹 크롤링을 공부하다 보면 웹 스크래핑(Web Scraping)이라는 용어도 자주 만나게 됩니다.

두 용어는 실제로 비슷한 의미로 사용되기도 하지만, 개념적으로는 약간의 차이가 있습니다.

구분 웹 크롤링 웹 스크래핑
목적 여러 웹페이지를 탐색하며 정보를 수집 특정 페이지에서 필요한 정보를 추출
사이트의 여러 게시글 주소 수집 게시글에서 제목과 작성자 추출
특징 웹페이지 탐색에 초점 데이터 추출에 초점
💡 초보자는 어떻게 이해하면 될까요?

처음 공부할 때는 두 개념을 너무 엄격하게 구분할 필요는 없습니다.

일반적으로 파이썬을 이용하여 웹사이트에 접속하고 필요한 정보를 자동으로 가져오는 작업 전체를 웹 크롤링이라고 부르는 경우가 많습니다.

3. 웹 크롤링의 동작 원리

우리가 웹 브라우저에서 사이트를 보는 과정과 웹 크롤링 프로그램의 동작 과정은 기본적으로 비슷합니다.

① URL 지정
② 웹 서버 요청
③ HTML 수신
④ 데이터 분석
⑤ 원하는 정보 추출
HTML은 무엇일까요?

웹페이지는 기본적으로 HTML(HyperText Markup Language)이라는 문서 구조로 만들어집니다.

예를 들어 다음과 같은 HTML이 있다고 가정해 보겠습니다.

HTML
<div class="product">
    <h2>파이썬 입문서</h2>
    <p class="price">25,000원</p>
</div>

크롤링 프로그램은 이 HTML을 분석하여 파이썬 입문서라는 상품명이나 25,000원이라는 가격 정보를 찾아낼 수 있습니다.

4. 파이썬으로 웹페이지 가져오기

파이썬에서는 웹사이트에 요청을 보내기 위해 requests라는 라이브러리를 많이 사용합니다.

1
requests 설치

VS Code의 터미널이나 명령 프롬프트에서 다음 명령을 실행합니다.

Terminal
pip install requests
2
웹사이트에 요청 보내기

크롤링 연습을 위해 만들어진 웹사이트에 접속해 보겠습니다.

Python
import requests

url = "https://quotes.toscrape.com/"

response = requests.get(url, timeout=10)

print(response.status_code)
실행 결과 예
200
💡 상태 코드 200은 무엇인가요?

웹 서버의 응답 상태 코드가 200이면 일반적으로 웹페이지 요청이 정상적으로 처리되었다는 의미입니다.

HTML 내용 확인하기

서버에서 받은 HTML은 response.text를 이용하여 확인할 수 있습니다.

Python
import requests

url = "https://quotes.toscrape.com/"

response = requests.get(url, timeout=10)
response.raise_for_status()

print(response.text)

실행하면 웹페이지를 구성하는 HTML 코드가 화면에 출력됩니다.

5. BeautifulSoup으로 데이터 추출하기

requests를 사용하면 HTML 전체를 가져올 수 있지만, 우리가 필요한 것은 보통 HTML 전체가 아니라 특정 제목, 가격, 링크, 게시글 내용 등입니다.

이런 데이터를 쉽게 찾을 수 있도록 도와주는 라이브러리가 BeautifulSoup입니다.

1
BeautifulSoup 설치
Terminal
pip install beautifulsoup4
2
첫 번째 문장 가져오기
Python
import requests
from bs4 import BeautifulSoup

url = "https://quotes.toscrape.com/"

response = requests.get(url, timeout=10)
response.raise_for_status()

soup = BeautifulSoup(response.text, "html.parser")

quote = soup.select_one(".text")

print(quote.get_text(strip=True))
실행 결과 예
“더 나은 세상을 만들기 위해 우리가 만든 과정은 우리의 생각의 결과입니다...”
여러 문장 한 번에 가져오기

select()를 사용하면 조건에 맞는 여러 요소를 한꺼번에 찾을 수 있습니다.

Python
import requests
from bs4 import BeautifulSoup

url = "https://quotes.toscrape.com/"

response = requests.get(url, timeout=10)
response.raise_for_status()

soup = BeautifulSoup(response.text, "html.parser")

quotes = soup.select(".text")

for quote in quotes:
    print(quote.get_text(strip=True))
실행 결과 형태
문장 1
문장 2
문장 3
...
💡 핵심 포인트

requests는 웹페이지를 가져오는 역할, BeautifulSoup은 가져온 HTML에서 원하는 부분을 찾는 역할을 한다고 이해하면 쉽습니다.

6. 웹 크롤링은 어디에 활용될까?

웹 크롤링은 반복적으로 웹 정보를 확인하고 정리해야 하는 다양한 업무에 활용할 수 있습니다.

1 뉴스 기사 수집

여러 뉴스 페이지에서 제목이나 기사 링크를 수집하여 관심 있는 정보를 한곳에 정리할 수 있습니다.

2 상품 정보 수집

허용된 범위 안에서 상품명, 가격, 재고 등의 정보를 자동으로 정리하는 프로그램을 만들 수 있습니다.

3 데이터 분석

웹에서 공개된 데이터를 수집한 뒤 Python의 pandas 등을 이용해 통계와 분석에 활용할 수 있습니다.

4 반복 업무 자동화

사람이 매일 웹사이트에 접속하여 확인하던 작업을 프로그램으로 자동화할 수 있습니다.

5 자료 수집

연구나 학습 목적으로 공개된 웹 데이터를 수집하고 필요한 형태로 정리할 때 활용할 수 있습니다.

7. 웹 크롤링할 때 주의할 점

파이썬으로 웹페이지를 가져올 수 있다고 해서 모든 웹사이트의 정보를 마음대로 수집해도 된다는 의미는 아닙니다.

⚠ 크롤링 전 반드시 확인하세요
  • 사이트의 이용약관과 정책을 확인합니다.
  • robots.txt 등 사이트의 크롤링 관련 정책을 확인합니다.
  • 로그인이 필요한 개인정보나 비공개 정보를 무단으로 수집하지 않습니다.
  • 저작권이 있는 콘텐츠를 무단으로 복제하거나 배포하지 않습니다.
  • 짧은 시간에 지나치게 많은 요청을 보내지 않습니다.
  • 가능하다면 사이트에서 제공하는 공식 API를 우선 이용합니다.
서버에 너무 많은 요청을 보내지 않기

반복문으로 수백 개의 페이지를 크롤링하면서 요청을 쉬지 않고 계속 보내면 상대 서버에 부담을 줄 수 있습니다.

학습 단계에서는 필요에 따라 요청 사이에 일정한 간격을 두는 방법을 사용할 수 있습니다.

Python
import time
import requests

urls = [
    "https://example.com/page1",
    "https://example.com/page2",
    "https://example.com/page3"
]

for url in urls:
    response = requests.get(url, timeout=10)

    print(response.status_code)

    time.sleep(1)
💡 time.sleep(1)

프로그램 실행을 약 1초 동안 멈추는 코드입니다.

다만 적절한 요청 간격은 웹사이트의 정책과 상황에 따라 다르므로 대상 사이트의 규칙을 먼저 확인해야 합니다.

8. 첫 웹 크롤링 프로그램 완성하기

지금까지 배운 내용을 하나의 프로그램으로 정리해 보겠습니다.

아래 프로그램은 크롤링 연습 사이트에서 문장과 작성자를 함께 가져오는 예제입니다.

crawling.py
import requests
from bs4 import BeautifulSoup

url = "https://quotes.toscrape.com/"

response = requests.get(url, timeout=10)
response.raise_for_status()

soup = BeautifulSoup(response.text, "html.parser")

items = soup.select(".quote")

for item in items:
    text = item.select_one(".text").get_text(strip=True)
    author = item.select_one(".author").get_text(strip=True)

    print("문장 :", text)
    print("작성자 :", author)
    print("-" * 50)
실행 결과 형태
문장 : “더 나은 세상을 만들기 위해 우리가 만든 과정은 우리의 생각의 결과입니다...”
작성자 : Albert Einstein
--------------------------------------------------

문장 : “우리가 선택하는 것이 우리를 만든다...”
작성자 : J.K. Rowling
--------------------------------------------------
💡 코드를 외우려고 하지 마세요

처음에는 전체 코드를 외우는 것보다 웹페이지 요청 → HTML 분석 → 원하는 요소 찾기라는 흐름을 이해하는 것이 중요합니다.

코드를 직접 입력하고 실행해 본 뒤 선택자나 출력 방법을 조금씩 변경해 보세요.

laptop screen displaying colorful code
📌 웹 크롤링 핵심 정리
  • 웹 크롤링은 프로그램을 이용해 웹사이트의 정보를 자동으로 수집하는 기술이다.
  • 파이썬의 requests 라이브러리로 웹페이지를 요청할 수 있다.
  • BeautifulSoup을 이용하면 HTML에서 원하는 데이터를 찾을 수 있다.
  • 일반적인 과정은 URL 요청 → HTML 수신 → 분석 → 데이터 추출 순서이다.
  • 뉴스, 상품 정보, 데이터 분석, 업무 자동화 등 다양한 분야에 활용할 수 있다.
  • 크롤링 전에는 대상 사이트의 이용약관과 정책을 반드시 확인해야 한다.
  • 처음에는 코드를 외우기보다 직접 실행하면서 전체 흐름을 이해하는 것이 중요하다.

프로그램·홈페이지·강의가 필요하신가요?

프로그램 판매, 무료 다운로드, 홈페이지 제작, IT 강의 상담을 도와드립니다.

상담 신청하기