웹 스크래핑은 웹페이지에서 필요한 값만 뽑아 표나 파일로 저장하는 작업이고, 크롤링은 링크를 따라 여러 페이지를 돌며 주소와 내용을 모으는 작업이다. 파이썬으로는 requests로 페이지를 가져오고 Beautiful Soup으로 값을 뽑아 CSV로 저장하는 순서가 기본이며, 수집 전에 robots.txt와 이용약관으로 허용 범위를 확인해야 한다(2026년 10월 16일 기준).
크롤링과 스크래핑 차이
크롤링은 시작 주소에서 링크를 따라가며 페이지 목록을 만드는 일이다. 검색엔진이 사이트를 돌아다니며 페이지를 발견하는 방식이 대표적이다. 스크래핑은 이미 정한 페이지에서 상품명, 가격, 제목처럼 원하는 값만 추출하는 일이다.
| 구분 | 크롤링 | 스크래핑 |
|---|---|---|
| 하는 일 | 링크를 따라 페이지를 찾고 모은다 | 페이지 안에서 필요한 값을 뽑는다 |
| 결과물 | 페이지 주소와 원문 목록 | 상품명·가격 같은 정리된 표 |
| 예시 | 검색엔진이 사이트 전체를 돌아보기 | 경쟁 상품 가격표를 CSV로 저장하기 |

구글 서치콘솔이나 SEO 글에서 말하는 크롤링은 검색엔진이 페이지를 방문하는 일을 뜻하고, 데이터 수집에서 말하는 크롤링은 내 프로그램이 페이지를 돌며 모으는 일을 뜻한다. 검색엔진 쪽 설명은 SEO 뜻과 기본 방법 글에 있다.
파이썬 웹 스크래핑 방법
파이썬에서는 페이지를 가져오는 requests와 HTML에서 값을 뽑는 Beautiful Soup 조합으로 시작한다. 파이썬 설치와 가상환경은 파이썬 기초 독학 시작 방법 글에서 먼저 끝내 둔다.
- 패키지를 설치한다. Beautiful Soup 공식 문서는
beautifulsoup4를 설치하라고 안내한다. 이름이 비슷한BeautifulSoup는 중단된 3버전이다.pip install requests beautifulsoup4 - 허용 여부를 확인한다. 다음 절의 robots.txt 확인을 먼저 한다.
- 페이지를 가져온다. requests 문서는 거의 모든 요청에
timeout을 넣으라고 안내한다. 지정하지 않으면 응답이 없을 때 프로그램이 무한정 멈출 수 있다. - 값을 뽑아 저장한다.

import csv
import requests
from bs4 import BeautifulSoup
url = "https://example.com/list"
headers = {"User-Agent": "my-scraper/0.1 (contact: me@example.com)"}
r = requests.get(url, headers=headers, timeout=10)
r.raise_for_status()
soup = BeautifulSoup(r.text, "html.parser")
rows = []
for item in soup.select(".item"):
title = item.select_one(".title").get_text(strip=True)
price = item.select_one(".price").get_text(strip=True)
rows.append([title, price])
with open("items.csv", "w", newline="", encoding="utf-8-sig") as f:
csv.writer(f).writerows(rows)
요청 라이브러리 requests 공식 퀵스타트는 헤더를 딕셔너리로 넘기는 방법과 raise_for_status()로 4xx·5xx 응답을 오류로 바꾸는 방법을 안내한다. 값을 고르는 select와 select_one은 Beautiful Soup 문서의 CSS 선택자 방식이다. .item, .title, .price는 예시 값이므로 대상 페이지에서 개발자 도구(F12)로 실제 클래스 이름을 확인해 바꾼다. CSV를 utf-8-sig(BOM이 붙는 UTF-8)로 저장하면 엑셀에서 열 때 한글 인코딩을 잘못 읽는 일을 피할 수 있다.
성공 확인은 세 가지로 한다. r.status_code가 200인지, rows의 길이가 화면에서 센 항목 수와 같은지, 만들어진 items.csv를 열어 첫 행의 값이 화면과 같은지 본다. 값이 비어 있다면 요청으로 받은 HTML에 그 값이 없는 것이다. 브라우저 개발자 도구의 네트워크 탭에서 데이터가 별도 주소로 오는지 먼저 본다.
크롤링 허용 범위: robots.txt 확인 방법
robots.txt는 사이트 주소 뒤에 /robots.txt를 붙여 여는 공개 파일로, 어떤 경로를 크롤러가 방문해도 되는지 적어 둔다. 표준 문서인 RFC 9309에 따르면 규칙은 User-agent 줄로 대상을 정하고 Allow와 Disallow로 경로를 허용·금지하며, 여러 규칙이 겹치면 더 구체적인 쪽이 적용된다.
파이썬 기본 라이브러리의 urllib.robotparser로 확인할 수 있다.
from urllib.robotparser import RobotFileParser
rp = RobotFileParser()
rp.set_url("https://example.com/robots.txt")
rp.read()
print(rp.can_fetch("my-scraper", "https://example.com/list"))
True면 그 경로는 robots.txt상 허용이고 False면 금지다. 파일이 없어 404가 오면 RFC 9309는 크롤러가 서버의 모든 자원에 접근해도 된다고 보고, 서버 오류(5xx)나 연결 실패면 전체 금지로 간주하라고 한다.

다만 robots.txt가 허용한다고 해서 무엇이든 수집해도 된다는 뜻은 아니다. RFC 9309는 이 규칙이 접근 권한 부여가 아니라고 밝히고, 구글 문서도 robots.txt는 강제력이 없어 민감한 정보는 비밀번호 같은 다른 방법으로 보호해야 한다고 설명한다. 반대로 말하면 사이트 이용약관, 로그인 뒤의 개인정보, 저작권이 있는 콘텐츠는 robots.txt와 별개로 따져야 한다.
수집 전에 확인할 순서
| 순서 | 확인 내용 | 하지 않으면 생기는 문제 |
|---|---|---|
| 1 | 공식 API나 제공 파일(CSV·RSS)이 있는지 | HTML 구조가 바뀔 때마다 코드가 깨진다 |
| 2 | robots.txt와 이용약관이 수집을 막는지 | 사이트가 요청을 차단하거나 약관 위반을 주장할 수 있다 |
| 3 | 개인정보·로그인 뒤 데이터가 섞여 있는지 | 수집 자체가 문제가 될 수 있어 대상에서 뺀다 |
| 4 | 요청 간격과 횟수 | 서버에 부담을 줘 차단당한다 |
한국 사이트는 사정이 다르다. 네이버는 개발자센터에서 블로그 검색 API를 제공하므로 네이버 블로그·뉴스 글이 필요하면 화면을 긁기 전에 이 API부터 쓴다. 쇼핑몰 가격이나 후기는 로그인과 차단 정책이 사이트마다 달라 이용약관을 개별로 읽어야 한다.
요청은 한 번에 몰아서 보내지 말고 time.sleep(1)처럼 간격을 두고 보낸다. 같은 페이지를 반복해서 가져오지 않도록 받은 결과는 파일로 저장해 두고 다시 쓴다. 플랫폼이 API를 제공하는 데이터는 화면 구조가 바뀌어도 응답 형식이 유지되므로 스크래핑보다 API를 우선한다.
자주 묻는 질문
크롤링과 스크래핑 중 초보자는 무엇부터 배우나?
스크래핑부터 배운다. 페이지 하나에서 값을 뽑는 흐름을 익히면 링크를 따라가는 크롤링은 반복문 하나를 더하는 일이다.
스크래핑한 데이터를 블로그나 서비스에 그대로 써도 되나?
그대로 쓰기 전에 원 사이트의 이용약관과 저작권 표시를 확인해야 한다. 공개된 페이지라도 콘텐츠의 권리는 원 사이트나 작성자에게 있을 수 있다.
값이 비어서 나오면 어떻게 하나?
브라우저 개발자 도구의 네트워크 탭에서 데이터가 별도 요청으로 오는지 본다. JSON을 돌려주는 주소가 보이면 HTML을 파싱하는 대신 그 주소를 r.json()으로 읽는 편이 간단하다.
같은 주제 글
이 글이 도움이 되었다면 공유해주세요
최신 인사이트
카카오톡 공유 썸네일 안 나올 때 해결법 (Kakao JavaScript SDK 2025)
카카오톡 공유하기에서 썸네일 이미지가 안 나오는 원인과 scrapImage로 KAGE URL을 변환해 해결하는 방법을 단계별로 설명합니다. 지금 확인하세요.
Claude Code 서브에이전트로 CRM 사용자 설명서 20분 만에 완성하는 방법
Claude Code 서브에이전트를 활용해 CRM 코드베이스에서 사용자 설명서와 비주얼 가이드북을 20분 만에 자동 생성한 실전 사례를 공유합니다. 지금 확인하세요.
GEO 생성형 엔진 최적화: 2025년 AI 마케팅 전략 완전 가이드
GEO 생성형 엔진 최적화란 무엇이며 기존 SEO와 어떻게 다른지, 2025년 AI 마케팅 전략의 핵심 실행 방법 5가지를 데이터와 함께 알아보세요.
관련 프로젝트
새 글을 이메일로 받아보세요
마케팅, 분석, 개발 인사이트를 정리해서 보내드려요.

