비개발자를 위한 크롤링 가이드: 크롤링의 종류와 활용법
웹페이지와 API에서 데이터를 가져오는 방식의 차이를 알아보고, 가상 상품 세 개로 수집 항목과 누락값을 확인합니다. 실제 사이트에 적용하기 전 확인할 권한과 오류 대응도 정리했습니다.

목차
세 줄로 먼저 읽기
이번 방문에서 한 편은 바로 볼 수 있습니다.
크롤링, 왜 비개발자도 알아야 할까요?
경쟁사 상품 가격을 엑셀에 옮기고, 뉴스 제목을 모으고, 채용 공고를 반복해서 확인하는 업무가 있습니다. 같은 항목을 계속 옮겨 적는다면 프로그램으로 일부 과정을 줄일 수 있습니다.
크롤링은 프로그램이 웹페이지를 찾아다니는 작업입니다. 그 페이지에서 상품명이나 가격 같은 정보를 꺼내는 작업은 스크래핑이라고 부릅니다. 실무에서는 두 작업을 묶어 크롤링이라고 부르기도 합니다. 이 글도 웹에서 필요한 데이터를 모으는 작업을 중심으로 설명합니다.
처음부터 쇼핑몰 전체를 수집할 필요는 없습니다. 어떤 항목을 가져올지 정하고, 세 개의 결과를 원문과 비교하는 것부터 시작하겠습니다. 먼저 수집 방식의 차이를 알아보고, 외부 사이트에 접속하지 않는 연습을 해보겠습니다.
웹 데이터를 가져오는 세 가지 방법
웹페이지를 읽는 방법과 서비스의 API에서 데이터를 받는 방법을 함께 비교하겠습니다. API 이용은 웹페이지를 돌아다니는 크롤링과 구별되지만, 필요한 데이터를 얻는 대안이 될 수 있습니다.
1. 페이지 파일을 받아서 필요한 내용을 꺼내기
웹서버에 페이지를 요청하면 HTML, 즉 웹페이지의 내용과 구조를 적은 문서를 받을 수 있습니다. 그 문서에 상품명과 가격이 들어 있다면 브라우저 화면을 직접 조작하지 않고도 값을 꺼낼 수 있습니다.
파이썬의 Requests나 HTTPX는 요청을 보내고 응답을 받는 데 쓰입니다. BeautifulSoup은 받은 HTML에서 필요한 부분을 찾는 도구입니다. 자바스크립트에서는 Cheerio로 HTML을 분석합니다. BeautifulSoup 자체가 사이트에 접속해서 파일을 가져오는 것은 아닙니다. BeautifulSoup 공식 문서도 HTML을 전달해 분석하는 방법을 설명합니다.
먼저 문서를 받아온 다음, 그 문서에서 ‘상품명’과 ‘가격’에 해당하는 부분을 찾는 과정입니다.
브라우저 전체를 실행하지 않아 비교적 가볍게 처리할 수 있습니다. 다만 처음 받은 HTML에 원하는 정보가 없으면 이 방법만으로는 부족합니다. 화면에서 프로그램이 추가로 실행된 뒤에 나타나는 정보도 있기 때문입니다. 로그인에 필요한 쿠키를 관리할 수도 있으므로, ‘브라우저가 없으면 쿠키도 없다’고 생각할 필요는 없습니다.
2. 브라우저를 실행해서 화면을 조작하기
브라우저 자동화 도구는 주소를 열고 버튼을 누르고 스크롤하는 작업을 프로그램으로 실행합니다. 헤드리스 브라우저는 브라우저 창을 화면에 표시하지 않고 실행하는 방식입니다.
클릭한 뒤 나타나는 정보를 확인할 때 유용합니다. 다만 실제 브라우저를 실행하므로 컴퓨터 자원을 사용하고, 원하는 내용이 나타났는지 기다리는 조건도 필요합니다. 브라우저를 사용한다고 사람의 접속과 구분되지 않거나 차단을 통과하는 것은 아닙니다.
- Playwright: Chromium, Firefox, WebKit을 이용한 브라우저 자동화를 지원합니다. WebKit 지원을 애플의 Safari 앱 자체를 조작한다는 뜻으로 이해하면 안 됩니다. 클릭 대상이 준비되었는지 기다리는 기능이 있지만, 필요한 데이터가 모두 도착했는지는 별도로 확인해야 합니다.
- Puppeteer: Chrome과 Firefox를 자동화할 수 있는 도구입니다.
- Selenium: 브라우저 조작과 웹 테스트에 사용합니다. 기존 코드나 업무 환경에서 이미 사용한다면 함께 검토할 수 있습니다.
처음 배우는 단계에서는 세 도구를 모두 설치할 필요가 없습니다. 수집할 자료가 어디에 있는지 확인한 뒤, 사용할 환경에 맞는 하나를 선택하면 됩니다. 지원 범위는 Playwright 문서와 Puppeteer 저장소에서 확인할 수 있습니다.
3. 공식 API로 필요한 데이터를 받기
API는 서비스가 정한 형식으로 요청을 보내고 데이터를 받는 통로입니다. 웹페이지에서 가격 위치를 찾아내는 대신, 서비스가 제공하는 항목을 받아 처리할 수 있습니다.
예를 들어 YouTube Data API의 댓글 목록 기능은 정해진 요청 형식으로 댓글 정보를 제공합니다. 하지만 어떤 API가 있다고 해서 그 서비스의 모든 데이터를 가져올 수 있는 것은 아닙니다. 제공 항목, 인증 방식, 호출 한도와 이용 조건을 각각 확인해야 합니다.
API도 인증이 잘못되거나 호출 한도를 넘으면 요청이 거절될 수 있습니다. 공식 통로라는 사실만으로 수집 후 재배포나 모든 용도의 이용이 허용되는 것도 아닙니다.
| 확인할 내용 | HTML을 받아 분석 | 브라우저 자동화 | 공식 API |
|---|---|---|---|
| 데이터를 찾는 곳 | 서버가 반환한 문서 | 브라우저가 실행한 페이지 | API가 제공하는 응답 |
| 클릭이나 스크롤 | 직접 실행하지 않음 | 필요한 동작을 실행 가능 | API 요청 조건으로 조회 |
| 처음 확인할 것 | 받은 HTML에 필요한 값이 있는지 | 필요한 동작 뒤 값이 나타나는지 | 필요한 항목을 제공하는지 |
| 제한 사항 | 접근 권한과 사이트 구조 | 접근 권한, 화면 변화와 실행 환경 | 인증, 제공 범위와 호출 한도 |
실제 업무에서는 공식 다운로드나 API가 필요한 데이터를 제공하는지 먼저 확인합니다. 웹페이지에서 가져와야 한다면 처음 받은 HTML에 값이 있는지 살펴보고, 화면 조작이 필요한 경우 브라우저 자동화를 검토합니다. 사이트의 보안이 약한지가 도구 선택의 기준은 아닙니다.
첫 연습: 상품 세 개를 표로 옮겨보기
실제 쇼핑몰에 접속하기 전에 아래 가상 자료를 사용하겠습니다. 설치나 API 키가 필요 없는 연습입니다. HTML의 모든 문법을 외울 필요는 없습니다. li 하나가 상품 하나이고, name과 price가 우리가 찾을 항목이라는 점만 확인하면 됩니다.
<ul>
<li><span class="name">A 노트</span><span class="price">1,200원</span></li>
<li><span class="name">B 펜</span><span class="price">800원</span></li>
<li><span class="name">C 컵</span><span class="price">문의</span></li>
</ul>이미 사용하는 AI 대화창에 위 HTML과 아래 요청을 함께 붙여 넣습니다. 이 연습은 이미 주어진 문서에서 값을 꺼내는 단계이며, 실제 사이트 접속에 성공했는지를 시험하는 과정은 아닙니다.
위 가상 HTML에 있는 상품을 CSV 형식으로 정리해줘.
열은 상품명, 가격원, 가격상태 순서로 써줘.
가격원에는 쉼표와 '원'을 제외한 숫자만 넣어줘.
'문의'처럼 숫자를 확인할 수 없으면 가격원은 비워두고
가격상태에 '확인 필요'라고 써줘. 다른 가격은 '확인됨'으로 써줘.
원문에 없는 가격을 추정하지 말고, 외부 사이트에도 접속하지 마.CSV는 쉼표로 열을 나누는 표 형식입니다. 예상 결과는 아래와 같습니다. 이 단계에서는 파일로 저장하지 않고 AI 답변 안의 CSV를 확인합니다. 첫 행은 열 이름이므로 제외하고, 그 아래 상품 세 행과 각 값이 맞는지 대조합니다.
상품명,가격원,가격상태
A 노트,1200,확인됨
B 펜,800,확인됨
C 컵,,확인 필요C 컵의 두 쉼표 사이가 비어 있는지 확인합니다. 가격을 모른다는 것과 0원이라는 것은 다릅니다. 0으로 저장하면 평균 가격을 계산할 때 실제보다 낮아질 수 있습니다.
상품이 두 개만 나오거나 C 컵 가격이 0으로 나왔다면 다음처럼 수정 요청을 합니다.
원문에는 상품이 세 개 있어. 각 li와 결과 행을 하나씩 대조해줘.
C 컵의 '문의'는 0원이 아니야. 가격원은 빈 값으로 남겨줘.
수정한 CSV와 바꾼 항목을 알려줘.이번에는 처음 붙여 넣었던 HTML에서 C 컵의 문의만 2,500원으로 바꿉니다. 바꾼 HTML과 같은 요청문을 다시 보내세요. 이전 CSV 결과를 직접 수정하는 것이 아니라, 바뀐 입력으로 새 결과를 받는 연습입니다. 세 번째 상품의 가격원이 2500, 가격상태가 확인됨으로 바뀌고, A 노트와 B 펜은 그대로여야 합니다. 이 확인이 되면 입력의 변화가 결과에 제대로 반영되는지 직접 검사한 것입니다.
실제 사이트에 적용하기 전 정할 것
‘네이버 리뷰를 모아줘’나 ‘인스타그램 피드를 가져와줘’만으로는 대상과 범위가 불명확합니다. 본인 계정의 데이터인지, 다른 사람이 작성한 내용인지, 분석만 할 것인지에 따라 확인할 조건이 달라집니다.
다음 내용을 먼저 적어두면 AI에게 코드를 요청하거나 개발자와 논의하기 쉽습니다.
- 대상과 목적: 어느 페이지의 정보를 왜 모으는지 적습니다.
- 필요한 항목: 상품명, 표시 가격, 원문 URL처럼 실제 사용할 항목만 정합니다.
- 허용 범위: 다운로드 기능, API 제공 항목, 사이트 이용 조건과 계정 권한을 확인합니다.
- 첫 확인 범위: 허용된 자료 중 세 개만 가져와 원문과 대조합니다.
- 실패 처리: 누락값, 접근 거절, 호출 한도와 중단 조건을 정합니다.
API에 필요한 항목이 없다면 곧바로 화면 수집이 허용되는 것은 아닙니다. 서비스가 제공하는 내보내기 기능을 찾거나 운영자에게 제공 방법을 문의할 수 있습니다.
허용 범위를 확인한 뒤에는 다음 틀로 코드를 요청합니다. 대괄호 부분은 실제로 확인한 내용으로 바꿉니다.
대상: [허용된 페이지 또는 API 문서 URL]
목적: [수집 목적]
확인한 이용 조건: [허용 항목, 호출 한도, 보관 및 재사용 조건]
내 환경: [운영체제, 설치되어 있는 실행 도구]
처음에는 자료 세 개만 가져와 상품명, 가격원, 가격상태,
원문 URL을 CSV로 저장하려고 해.
먼저 필요한 데이터가 제공되는 위치와 적절한 방법을 설명해줘.
그다음 내 환경에서 실행할 코드와 파일 저장 위치를 안내해줘.
원문에 없는 값은 추정하지 말고 누락 상태를 구분해줘.
접근 거절이나 CAPTCHA가 나오면 중단하고 이유를 알려줘.
인증 정보는 코드에 직접 넣지 말고 필요한 설정 방법을 설명해줘.
반복 실행이나 예약 실행은 첫 결과를 확인한 뒤에 진행할게.이 요청만으로 코드의 정확성이나 수집 권한이 보장되지는 않습니다. 첫 실행 후에는 행 수, 상품명, 가격, 원문 URL을 직접 대조합니다. 할인 전 가격을 가져왔는지, 배송비가 섞였는지도 실제 목적에 맞게 확인해야 합니다.
결과가 비어 있거나 접속이 막혔을 때
결과가 없다고 모두 봇 탐지에 걸린 것은 아닙니다. 필요한 정보가 아직 나타나지 않았거나, 값을 찾는 위치가 바뀌었거나, 검색 조건에 맞는 자료가 없을 수도 있습니다.
| 나타난 현상 | 먼저 확인할 내용 | 다음 행동 |
|---|---|---|
| 요청은 성공했지만 결과가 비어 있음 | 받은 내용에 실제 데이터가 있는지 | 응답과 값을 찾는 위치를 확인 |
| 화면에는 값이 있는데 코드에는 없음 | 화면 실행 후 추가된 값인지 | 브라우저 동작과 대기 조건 확인 |
| 인증 오류 또는 접근 거절 | 계정 권한과 API 인증 조건 | 권한이 확인될 때까지 수집 중단 |
| 호출 한도 초과 | 서비스 문서의 한도와 재시도 안내 | 안내된 조건에 맞춰 재시도 시점 조정 |
| CAPTCHA 표시 | 자동 접근 여부의 추가 확인 요청 | 자동 수집을 중단하고 허용된 제공 방법 확인 |
CAPTCHA는 위 화면처럼 자동 접근 여부를 확인하는 장치입니다. 브라우저 도구를 바꾸거나 마우스를 사람처럼 움직이면 해결된다고 가정하지 않습니다.
AI에게 오류를 물어볼 때는 실행한 단계, 오류 메시지, 기대한 결과를 함께 전달합니다. 오류 내용을 붙여 넣기 전에 API 키, 쿠키, 개인 계정 정보가 포함되어 있지 않은지 확인합니다. 수집 결과 세 개가 맞는지 확인하기 전에는 수집량이나 병렬 실행 수를 늘리지 않습니다.
공개된 정보도 이용 조건을 확인해야 합니다
크롤링의 적법성은 수집 대상, 접근 방법과 이용 목적에 따라 달라집니다. ‘공개되어 있다’, ‘소량이다’, ‘API로 받았다’는 조건 하나만으로 모든 이용이 허용된다고 판단할 수 없습니다.
개인정보는 동의뿐 아니라 법률에서 정한 다른 처리 근거가 적용될 수 있습니다. 반대로 공개된 정보라고 처리 근거를 확인하지 않아도 되는 것은 아닙니다. 닉네임도 다른 정보와 쉽게 결합해 개인을 알아볼 수 있다면 개인정보에 해당할 수 있으므로 무조건 수집해도 되는 항목으로 분류하지 않습니다. 개인정보 보호법 제2조는 결합에 드는 시간, 비용과 기술 등을 고려하도록 규정합니다. 실제 업무에서는 개인정보에 해당하는지와 처리 근거, 필요한 수집 범위를 확인해야 합니다. 개인정보 보호법 제15조
저작권과 데이터베이스 권리도 따로 살펴봐야 합니다. 기사나 리뷰를 읽을 수 있다는 사실이 전문을 복제해 재배포할 권리를 뜻하지는 않습니다. 개별 자료가 짧더라도 데이터베이스의 상당 부분을 가져오거나 작은 부분을 반복해서 수집하는 방식이 문제가 될 수 있습니다. 저작권법 제93조
접근 조건에는 사이트 이용약관, API 이용 조건, 계정 권한과 호출 한도가 포함됩니다. robots.txt는 크롤러에 접근 규칙을 알리는 파일이며, 그 자체가 접근 권한이나 저작물 이용 허락은 아닙니다. robots.txt 표준도 접근 승인을 위한 수단과 구별합니다. 공공데이터 역시 자료별 이용허락 범위를 확인해야 합니다.
처음에는 개인정보가 없는 가상 자료로 항목과 오류 처리를 익히고, 실제 업무에서는 필요한 권한과 이용 조건을 확인한 작은 범위부터 적용하세요. 세 개의 결과를 확인하고 같은 작업을 다시 실행해도 맞는 결과가 나오는지 검사하는 과정이 자동화의 출발점입니다.
3줄 요약
-
공식 API는 제공 항목과 이용 조건을 확인해 사용하며, 웹페이지 수집은 필요한 정보가 처음 받은 HTML에 있는지에 따라 방법을 선택합니다.
-
브라우저 자동화는 클릭과 화면 실행을 도울 수 있지만 수집 권한이나 차단 통과를 보장하지 않습니다.
-
가상 자료 세 개로 항목과 누락값을 확인한 뒤, 실제 수집에서는 이용 조건과 개인정보 처리 근거를 확인하고 작은 범위부터 검증합니다.

제대로 이해했는지 한 문제로 확인해 볼까요?
답을 고르면 바로 풀이가 나와요.
상품 세 개 중 하나의 가격이 ‘문의’로 표시되어 있습니다. 수집 결과를 확인하는 적절한 방법은 무엇인가요?
이 글이 도움이 되었나요?
AI 검색에 인용되려면 먼저 크롤링과 색인이 되어야 합니다. 그 순서를 다룹니다
코스 전체 보기 →
새 글과 AI 소식을 메일로 받아 보세요
AI가 바꾸는 일과 도구, 측정 실무 이야기를 매주 한 번 보내 드려요.
