지난주에 세일즈팀 동료가 비즈니스 디렉터리 페이지 200개쯤에서 연락처를 뽑는 일을 도와달라고 했어요. 그의 원래 계획은 페이지를 하나씩 복사해 스프레드시트에 붙여넣는 거였죠. 저는 ChatGPT로 Python 스크래퍼를 만들면 된다고 했고, 20분 만에 스크립트가 나왔어요. 그런데 30분 뒤 제 DM에 이런 메시지가 떴어요. "처음 다섯 페이지는 잘 되다가, 그다음부터 그냥… 멈췄어요."
흔한 일이에요. ChatGPT는 스크래핑 코드를 정말 잘 써주지만, 늘 그런 건 아니거든요. 게다가 온라인 튜토리얼 대부분은 "봐, 이 장난감 사이트에선 되잖아" 수준에서 끝나버려요. 그래서 JavaScript, 봇 차단, 페이지네이션이 깔린 실제 페이지를 만나는 순간 막막해지죠. 이 가이드에서는 ChatGPT 웹 스크래핑이 실전에서 어떤 모습인지 처음부터 끝까지 짚어볼게요. 전체 워크플로우, 재사용 가능한 프롬프트 템플릿 5개(예시 하나가 아니라요), 어디서 왜 깨지는지에 대한 솔직한 분석, 그리고 막혔을 때 무엇을 할지까지요. 코드 없이 바로 쓰는 Thunderbit 같은 대안도 함께요.
ChatGPT 웹 스크래핑이란 무엇인가요?
"ChatGPT 웹 스크래핑"은 ChatGPT의 힘을 빌려 웹사이트에서 데이터를 뽑아내는 방식이에요. 다만 많은 분이 놓치는 중요한 차이가 하나 있어요. ChatGPT가 직접 웹사이트를 스크래핑하지는 않는다는 점이에요. URL에 접속하거나, HTML을 가져오거나, 페이지를 클릭해 넘기지 못해요. 대신 그 일을 해주는 코드를 만들어주거나, 채팅에 붙여넣은 원시 HTML을 파싱해 구조화된 데이터로 바꿔줄 순 있어요.
크게 두 가지 방식이 있어요.
- 코드 생성기로서의 ChatGPT: 페이지와 원하는 데이터를 설명하면, ChatGPT가 Python 스크립트(보통 BeautifulSoup, Selenium, Playwright 중 하나)를 써줘요. 실행은 본인 컴퓨터에서 하고요.
- 데이터 파서로서의 ChatGPT: 원시 HTML을 채팅에 붙여넣거나(Code Interpreter로 업로드) 필요한 필드를 JSON이나 CSV로 뽑게 해요.
두 방식 다 실제 요청과 실행은 사용자 몫이에요. ChatGPT는 손이 아니라 두뇌 역할이죠. 2025년 10월에 나온 최신 ChatGPT Atlas 브라우저처럼 웹을 대화형으로 탐색하는 기능이 있어도, 결과는 응답 형태로 나오지 500개 상품 행이 담긴 구조화 CSV를 내주진 않아요. 즉, 브라우징 보조 도구일 뿐 데이터 추출 파이프라인은 아니에요.
왜 ChatGPT로 웹 스크래핑을 하나요? 누가 쓰면 좋을까요?
ChatGPT는 웹 스크래핑의 진입 장벽을 크게 낮춰줘요. 2025 Stack Overflow Developer Survey에 따르면 개발자의 84%가 이미 AI 도구를 업무에 쓰거나 쓸 계획이고, 그중 ChatGPT 점유율이 82%로 가장 높아요. 그런데 "ChatGPT 웹 스크래핑"의 사용자는 개발자만이 아니에요. 영업 리드 리스트를 만드는 SDR, 경쟁사 가격을 추적하는 이커머스 관리자, 매물 데이터를 모으는 부동산 분석가, 콘텐츠를 모으는 마케팅팀 모두가 주요 사용자예요.
대표적인 활용 사례와 수혜 대상을 간단히 보면 이래요.
| 활용 사례 | 주요 사용자 | 스크래핑 대상 |
|---|---|---|
| 세일즈 리드 추출 | SDR, 세일즈 운영 | 디렉터리의 이름, 이메일, 전화번호 |
| 경쟁사 가격 모니터링 | 이커머스, 가격 정책팀 | 상품명, 가격, 재고 여부, SKU |
| 시장 조사 | 분석가, 창업자 | 회사 정보, 리뷰, 평점, 기능 목록 |
| 부동산 데이터 수집 | 중개인, 투자자 | 매물 가격, 주소, 침실/욕실 수, 담당자 정보 |
| 콘텐츠 집계 | 마케팅, SEO 팀 | 기사 제목, URL, 발행일, 작성자 |
페이지 100개의 데이터를 손으로 옮기면 3~5시간이 걸릴 수 있어요. 하지만 ChatGPT가 만든 스크립트는 잘만 되면 같은 일을 몇 분이면 끝내요. 바로 그 "잘만 되면"이 이 글의 핵심이고요.
Gartner는 2026년까지 공식 IT 부서 밖의 개발자가 저코드 도구 사용자의 최소 80%를 차지할 거라고 봐요. 즉 "ChatGPT 웹 스크래핑"을 찾는 사람들은 점점 더, 엔지니어를 따로 두지 않고도 데이터를 얻고 싶은 비개발자예요. 이들에게 ChatGPT는 첫 선택지이고, 스크립트가 말을 안 들을 때 손이 가는 도구가 Thunderbit이에요.
ChatGPT 웹 스크래핑은 어떻게 작동하나요? 단계별 가이드
장난감 사이트가 아니라 실제 비즈니스 디렉터리 목록 페이지를 예로 들어, 진짜 워크플로우를 끝까지 짚어볼게요.
- 난이도: 중급(기본적인 Python 실행이 가능해야 함)
- 소요 시간: 첫 스크래핑 기준 약 15~30분
- 준비물: Chrome 브라우저, Python 환경(Python 3.10+), ChatGPT(무료 플랜 가능), 대상 URL
1단계: 웹사이트를 살펴보고 필요한 데이터를 파악하기
스크래핑할 페이지를 Chrome에서 여세요. 가져오고 싶은 데이터 하나(예: 회사명)를 우클릭하고 **검사(Inspect)**를 선택하면, Chrome DevTools가 열리며 해당 HTML 요소가 강조돼요.
h2.business-name, span.phone, a.website-link 같은 CSS 선택자를 확인하세요. 선택자가 구체적일수록 ChatGPT가 더 정확한 코드를 만들어요. 그다음 페이지 구조를 보여줄 대표 HTML 조각(데이터 카드 하나 정도)을 복사해 프롬프트에 붙여넣으세요.
이제 필드 이름 목록(예: business_name, phone, website_url)과 각각에 대응하는 CSS 선택자를 정리해두면 돼요.
2단계: 상세한 ChatGPT 프롬프트 작성하기
대부분의 튜토리얼이 여기서 무너져요. 너무 두루뭉술한 프롬프트를 던져놓고 결과를 기대하거든요. 좋은 스크래핑 프롬프트에는 여섯 가지가 들어가야 해요.
- 언어와 라이브러리: "BeautifulSoup 4를 쓰는 Python 3.11 스크립트를 작성해 줘."
- 대상 URL: 스크래핑할 정확한 페이지.
- CSS 선택자: 1단계에서 찾은 각 필드의 선택자.
- 출력 형식: CSV, JSON 또는 둘 다.
- 특수 지시사항: 인코딩, 오류 처리, 지연 시간 등.
- HTML 스니펫: 실제 페이지 HTML 20~40줄을 붙여 ChatGPT가 구조를 보게 함.
아래는 주석이 달린 샘플 프롬프트예요.
당신은 시니어 Python 엔지니어입니다. Python 3.11과 BeautifulSoup 4를 사용해 웹 스크래퍼를 작성해 주세요.
대상 URL: https://example.com/businesses
목표: 페이지의 모든 비즈니스 카드를 추출해 비즈니스당 한 행씩 반환하기.
필요한 필드(CSS 선택자 포함):
- business_name (h2.biz-name)
- phone (span.phone-number)
- website_url (a.biz-link, href)
- rating (div.stars[data-rating])
출력: UTF-8 인코딩과 헤더 행을 포함한 businesses.csv로 저장.
요구사항:
- 실제 사용자 에이전트 헤더가 포함된 requests 사용
- 누락된 필드는 예외 없이 None으로 처리
- 마지막에 추출된 비즈니스 수 출력
- 반복 요청이 있다면 1초 지연 추가
페이지의 대표 HTML 스니펫(비즈니스 카드 1개):
<실제 HTML 20~40줄을 여기에 붙여 넣으세요>
팁: HTML 스니펫을 넣는 게 정확도를 가장 크게 끌어올려요. ChatGPT는 URL에 직접 못 들어가니까, 그 스니펫이 페이지 구조를 판단하는 유일한 단서예요.
3단계: 생성된 코드를 검토하고 테스트하기
ChatGPT가 준 코드를 곧장 돌리지 마세요. 먼저 읽으며 확인해야 해요.
- 환각된 선택자: 실제 페이지에 없는 CSS 클래스를 ChatGPT가 지어내기도 해요.
- 누락된 라이브러리:
pip install requests beautifulsoup4(또는playwright등)가 필요한지 보세요. - 하드코딩 값: URL, 필드명, 파일 경로가 맞는지 점검하세요.
가상환경을 만들고 의존성을 설치한 뒤, 작은 샘플(1~2페이지)로 먼저 돌려보세요. 출력된 CSV를 확인하세요. 컬럼이 제대로 찼나요? 기대한 데이터가 비어 있진 않나요?
4단계: 후속 프롬프트로 보완하기
ChatGPT의 진짜 강점은 반복 수정이에요. 첫 스크립트가 1페이지만 가져온다면 이렇게 물어보세요.
"스크립트가 첫 페이지만 스크래핑합니다. 페이지네이션을 추가해서 모든 페이지를 가져오게 해주세요. 사이트는 ?page=1, ?page=2 식으로 구성되어 있습니다. 페이지가 결과를 0개 반환하거나 50페이지를 넘으면 멈추게 해주세요."
필드가 빠지면 이메일이나 전화번호에 정규식 fallback을 추가해달라고 하세요. 사이트가 JS 중심이면 Playwright 버전을 요청하면 되고요. 이런 후속 프롬프트는 앞선 코드를 이어받아 다듬어줘요. 말하자면, 가끔 너무 자신만만하지만 엄청 빠른 파트너와 짝 프로그래밍하는 셈이에요.
웹 스크래핑용 ChatGPT 프롬프트 템플릿 5가지
이 구성을 제대로 정리한 가이드는 거의 못 봤어요. 그래서 시나리오별로 다섯 가지 프롬프트 템플릿을 직접 만들고, 테스트하고, 다듬었어요. 그대로 복사한 뒤 URL과 HTML 스니펫만 바꾸면 ChatGPT가 바로 쓸 만한 코드를 내놓을 가능성이 높아요.
템플릿 1: 목록 페이지 스크래퍼(상품 카탈로그, 디렉터리)
사용 시점: 상품, 비즈니스, 채용 공고처럼 항목이 많은 페이지에서 각 항목당 한 행이 필요할 때.
당신은 시니어 Python 엔지니어입니다. Python 3.11과 BeautifulSoup 4를 사용해 웹 스크래퍼를 작성해 주세요.
대상 URL: [YOUR URL]
목표: 페이지의 모든 아이템 카드를 추출해 아이템당 한 행씩 반환하기.
필요한 필드(CSS 선택자 포함 — Inspect로 확인한 값):
- [field_1] ([selector_1])
- [field_2] ([selector_2])
- [field_3] ([selector_3])
- [field_4] ([selector_4, 필요한 경우 attribute 포함])
출력: UTF-8 인코딩과 헤더 행을 포함한 items.csv로 저장.
요구사항:
- 실제 사용자 에이전트 헤더가 포함된 requests 사용
- 누락된 필드는 예외 없이 None으로 처리
- 마지막에 추출된 아이템 수 출력
- 반복 요청이 있다면 1초 지연 추가
페이지의 대표 HTML 스니펫(아이템 카드 1개):
[실제 HTML 20~40줄을 여기에 붙여 넣으세요]
예상 결과: 필드명과 일치하는 컬럼을 가진 CSV 파일이 아이템당 한 행씩 생성됩니다.
템플릿 2: 상세/서브페이지 스크래퍼(개별 상품 또는 프로필 페이지)
사용 시점: 정보가 풍부한 단일 페이지(상품 페이지, 인물 프로필, 부동산 매물 등)에서 모든 정보를 구조화된 레코드 하나로 뽑고 싶을 때.
상세 페이지 URL을 입력받아 다음 키를 가진 dict를 반환하는 Python 함수 `scrape_detail(url)`을 작성해 주세요.
- [field_1]
- [field_2]
- [field_3]
- [field_4]
- [field_5]
BeautifulSoup를 사용하세요. 누락된 필드는 모두 예외 없이 None으로 처리해 주세요.
이메일과 전화번호에 대한 정규식 fallback도 포함해 주세요. 모든 페이지가 일관된 태그로 감싸는 것은 아니기 때문입니다.
dict를 반환하는 동시에 details.csv에 한 행씩 추가해 주세요(첫 호출 시 헤더 포함해 파일 생성).
실제 상세 페이지의 HTML 스니펫:
[상세 페이지 HTML 40~60줄을 여기에 붙여 넣으세요]
예상 결과: 페이지마다 dict 하나가 나오고, 상세 페이지가 추가될 때마다 CSV도 함께 커집니다.
템플릿 3: 동적/JS 렌더링 페이지 스크래퍼(Playwright)
사용 시점: 페이지가 JavaScript로 콘텐츠를 불러오는 경우(React, Angular 등). 소스 HTML이 비어 있는 <div id="root">만 보일 때.
JavaScript로 렌더링되는 페이지를 위한 Playwright(sync API) 기반 Python 웹 스크래퍼를 작성해 주세요.
대상 URL: [YOUR URL]
목표: 페이지가 동적으로 로드된 뒤 나타나는 모든 결과 카드를 추출하기.
요구사항:
- 콘텐츠가 로드될 때까지 `page.wait_for_selector('[YOUR CARD SELECTOR]', timeout=15000)`를 사용
- 지연 로딩 결과를 트리거하기 위해 1초 간격으로 페이지 하단까지 두 번 스크롤
- 각 카드에서 [field_1], [field_2], [field_3], [field_4] 추출
- 결과를 dict 리스트 형태로 results.json에 UTF-8로 저장
- 처음에는 headless=False로 실행해 화면을 볼 수 있게 하고, 종료 전 마지막에 2초 멈춤 추가
requests나 BeautifulSoup는 사용하지 말고, Playwright만 사용해 주세요.
예상 결과: 각 결과 카드당 하나의 객체가 들어 있는 JSON 파일이 만들어지고, 모든 필드가 채워집니다.
템플릿 4: 페이지네이션 처리기(다중 페이지 스크래핑)
사용 시점: 이미 단일 페이지 스크래퍼가 있고, 이제 모든 페이지를 순회해야 할 때.
아래의 기존 BeautifulSoup 스크래퍼를 페이지네이션 루프로 감싸서, 1페이지만이 아니라 모든 페이지를 수집하도록 바꿔 주세요.
사이트는 URL 파라미터 페이지네이션을 사용합니다: ?page=1, ?page=2, 등.
종료 조건: 현재 페이지의 아이템 수가 0개가 되거나, 응답 상태 코드가 200이 아니거나, 100페이지에 도달하면 중단(안전장치)합니다.
다음을 추가해 주세요:
- 페이지 요청 사이에 1.5초의 예의 있는 지연
- 각 요청을 try/except로 감싸 에러를 기록하고 계속 진행
- 5페이지마다 진행 상황 출력: "Page 15 → 300 items so far"
- 최종 저장 파일은 items_all.csv
기존 스크래퍼:
[현재 사용 중인 단일 페이지 스크래퍼를 여기에 붙여 넣으세요]
예상 결과: 모든 페이지의 아이템이 들어 있는 하나의 CSV와 함께, 콘솔에 진행 상황이 표시됩니다.
템플릿 5: 데이터 정리 및 구조화("HTML 붙여넣기" 방식)
사용 시점: 원시 HTML이 이미 있고(curl로 받았거나, 브라우저에서 복사했거나, 파일로 저장했거나), ChatGPT가 이를 깔끔한 구조화 데이터로만 바꿔주길 원할 때—코드는 필요 없을 때.
제품 상세 페이지의 원시 HTML을 붙여 넣을 예정입니다. 코드는 작성하지 말고, 아래 스키마에 맞는 JSON 객체로 추출 데이터만 반환해 주세요.
{
"name": string,
"brand": string,
"price": number,
"currency": string (ISO 4217),
"availability": "in_stock" | "out_of_stock" | "preorder" | "unknown",
"rating": number (0-5) or null,
"review_count": integer or null,
"description": string (최대 500자),
"key_specs": [{"name": string, "value": string}]
}
정말 찾을 수 없는 값은 null로 처리해 주세요 — 절대 임의로 지어내지 마세요.
JSON 객체만 반환하고, 설명 문장이나 마크다운 코드 블록은 포함하지 마세요.
HTML:
[전체 페이지 HTML을 여기에 붙여 넣으세요]
예상 결과: 스프레드시트나 데이터베이스에 바로 넣을 수 있는 JSON 객체 하나가 반환됩니다.
ChatGPT 웹 스크래핑이 깨지는 지점(솔직한 한계)
대부분의 튜토리얼이 이 부분을 통째로 건너뛰어요. 저는 ChatGPT가 만든 스크래퍼를 디버깅할 만큼 충분히 써봤고, 어디서 무너지는지 정확히 알아요. 2025 Stack Overflow survey도 개발자의 단 3%만 AI 출력을 "매우 신뢰한다"고 답했다고 보여줘요. 다 이유가 있어요.
JavaScript 중심의 동적 웹사이트
웹사이트의 98.8% 이상이 클라이언트 측 기능에 JavaScript를 써요. React만 해도 이제 전체 웹사이트의 7.2%에서 돌아가는데, 1년 만에 약 67% 늘었어요. ChatGPT에게 "이 페이지를 스크래핑해 줘"라고 하면 기본 출력은 대개 requests + BeautifulSoup 스크립트예요. 이건 원시 HTML을 가져오는데, React나 Angular 사이트의 원시 HTML은 종종 비어 있는 <div id="root">뿐이에요. 진짜 데이터는 JavaScript 실행 후에 로드되지만, requests는 그 과정을 못 해요.
ChatGPT는 요청하면 Selenium이나 Playwright 코드를 만들 순 있어요. 하지만 그런 스크립트는 느리고(Playwright는 페이지 로드당 평균 2.9초, 정적 requests는 그보다 훨씬 빠름) 대기 조건, 스크롤 트리거, 잘못 추측한 요소 선택자 때문에 자주 디버깅이 필요해요.
봇 차단과 CAPTCHA
Cloudflare는 전체 웹사이트의 약 20%를 보호하고, DataDome 같은 서비스는 99.9%의 봇 탐지 정확도를 내세워요. Python 사용자 에이전트로 보내는 단순한 requests.get()은 말 그대로 전형적인 봇 패턴이에요. ChatGPT가 만든 스크립트에는 프록시 로테이션도, TLS 지문 위장도, 쿠키 처리도, CAPTCHA 해결도 없어요. 상업용 사이트에서 기본 보호만 걸려 있어도 첫 요청에서 막히기 쉬워요.
페이지네이션과 대규모 스크래핑
ChatGPT의 기본 페이지네이션 루프는 ?page=N을 돌거나 .next 버튼을 클릭하는 식이에요. 실제 사이트는 커서 기반 페이지네이션, IntersectionObserver를 쓴 무한 스크롤, GraphQL 호출을 쓰기도 해요. 정확한 네트워크 호출을 보여주지 않는 한, ChatGPT가 이런 구조에 맞는 코드를 제대로 만들기 어려워요. 보여줘도 루프가 부실한 경우가 많고요. Oxylabs의 ChatGPT scraping guide와 Decodo의 2026 tutorial 모두 페이지네이션을, 예시 스크래퍼가 두세 번째 프롬프트를 필요로 하는 가장 흔한 지점으로 꼽아요.
지속적이고 예약된 스크래핑
ChatGPT가 주는 건 1회용 스크립트예요. 스케줄러도, 변경 감지도, 알림도 없어요. "경쟁사 가격을 매일 아침 확인"하려면 cron, Airflow, Lambda 같은 걸 배워야 하는데, 첫 응답엔 이런 내용이 없어요. 데이터를 반복해서 받아야 하는 비즈니스 사용자에게는 여기서 막다른 길이 돼요.
속도와 비용 문제
JavaScript가 많은 사이트에서는 Selenium이나 Playwright를 써도 페이지당 시간이 이상적인 조건에서도 310초쯤 걸리고, 재시도나 봇 대기까지 들어가면 페이지당 4060초까지 늘어날 수 있어요. 포럼과 튜토리얼에서 흔히 토로하는 불만이에요.
HTML 파싱에 ChatGPT API를 쓰는 경우(대규모 "HTML 붙여넣기" 방식), 토큰 비용이 빠르게 쌓여요. 현재 GPT-4o 가격 기준($2.50/M 입력 토큰, $10/M 출력 토큰), 상품 페이지 1,000개를 파싱하면 토큰만 약 $95$105 들어요. GPT-4o mini를 쓰면 같은 양을 약 $6.50에 처리하고요. 여기에 프록시 비용($3~10/GB), 로컬 크롤러 유지보수, 개발자 시간까지 더하면 "그냥 ChatGPT 쓰자"는 접근이 슬슬 비싸 보이기 시작해요.
| 규모 | GPT-4o 토큰 비용(추정) | GPT-4o Mini 토큰 비용(추정) |
|---|---|---|
| 100페이지 | 약 $9.55 | 약 $0.65 |
| 1,000페이지 | 약 $95.50 | 약 $6.50 |
| 10,000페이지 | 약 $955 | 약 $65 |
추정치는 페이지당 약 5만 입력 토큰과 2천 출력 토큰을 가정합니다. 실제 비용은 페이지 크기와 출력 복잡도에 따라 달라집니다.
ChatGPT 웹 스크래핑 vs 노코드 AI 스크래퍼 vs 커스텀 코드: 선택 기준
모든 스크래핑 작업에 같은 도구가 필요한 건 아니에요. Thunderbit에서 실제 프로젝트로 세 가지 접근을 써보며 정리한 판단 기준은 이래요.
| 상황 | ChatGPT + Python | 노코드 AI 스크래퍼(예: Thunderbit) | 커스텀 코드 + 프록시 |
|---|---|---|---|
| 단순 정적 페이지 | ✅ 매우 좋음 — 빠르게 생성 | ✅ 가능하지만 과할 수 있음 | ⚠️ 지나치게 복잡함 |
| JS 렌더링 / 동적 콘텐츠 | ⚠️ Selenium/Playwright 필요 — 자주 깨짐 | ✅ 브라우저/클라우드 스크래핑으로 처리 | ✅ 완전한 제어 가능 |
| 봇 차단 / CAPTCHA 사이트 | ❌ ChatGPT는 CAPTCHA를 풀 수 없음 | ✅ 클라우드 스크래핑 인프라가 많은 경우 처리 | ✅ 프록시 로테이션으로 가능 |
| 페이지네이션(100페이지 이상) | ⚠️ 루프가 취약하고 디버깅 필요 | ✅ 내장 페이지네이션 지원 | ✅ 엔지니어링으로 견고하게 구현 가능 |
| 비개발자 사용자 | ❌ Python 지식 필요 | ✅ 2번 클릭으로 코드 불필요 | ❌ 코딩 필요 |
| 지속적/예약 스크래핑 | ❌ 수동 재실행 | ✅ 예약 스크래퍼 기능 | ✅ cron/오케스트레이션으로 가능 |
| Sheets/Airtable/Notion으로 내보내기 | ⚠️ 추가 코드 필요 | ✅ 기본 원클릭 내보내기 | ⚠️ 추가 연동 코드 필요 |
짧게 정리하면 이래요. ChatGPT는 빠른 일회성 스크립트와 학습용으로 좋아요. 반복적이고 운영 수준의 스크래핑, 특히 비개발자라면 Thunderbit 같은 노코드 도구가 더 빠르고 안정적이며 유지보수도 필요 없어요. 엔터프라이즈 규모의 엔지니어링 프로젝트라면 커스텀 코드와 프록시 인프라가 가장 큰 제어권을 주고요.
노코드 대안: Thunderbit이 코드 없이 웹 스크래핑을 처리하는 방법
코드를 전혀 안 쓰는 분, 혹은 ChatGPT 스크립트 디버깅에 밤을 너무 많이 태운 분이라면 완전히 다른 길이 있어요. ChatGPT는 코드를 만들어요. Thunderbit은 그 단계를 건너뛰고요.
저는 Thunderbit 팀에서 일하니 이 부분은 솔직히 밝혀요. 그래도 실제로 이 방식이 대부분의 비즈니스 사용자에게는 가장 빠른 길이라고 믿어요. 워크플로우는 이래요.
AI 필드 제안: 어떤 페이지든 데이터 구조를 자동 인식
웹페이지를 열고 Thunderbit Chrome extension을 누른 뒤 "AI Suggest Fields"를 누르세요. Thunderbit의 AI가 JavaScript로 불러온 콘텐츠까지 포함한 렌더링된 페이지를 읽고, 컬럼명과 데이터 유형을 제안해요. Inspect도, CSS 선택자도, 프롬프트 엔지니어링도 필요 없어요. 그다음 "Scrape"를 누르면 끝이에요.
ChatGPT 방식과 비교해볼게요. DevTools 열기 → 선택자 찾기 → 프롬프트 작성 → 코드 검토 → 의존성 설치 → 스크립트 실행 → 결과 확인 → 반복 수정. Thunderbit은 이 모든 걸 두 번 클릭으로 압축해요.
서브페이지 스크래핑으로 목록을 자동 보강
목록 페이지를 스크래핑한 뒤 "Scrape Subpages"를 누르면, Thunderbit이 각 행의 상세 페이지를 방문해 이메일, 전화번호, 소개문 같은 추가 필드를 기존 테이블에 붙여줘요. ChatGPT로 하려면 별도 스크립트, 루프, 각 서브페이지의 오류 처리, 데이터를 합치는 로직이 다 필요해요. Thunderbit은 한 번에 해결하고요.
어디로든 내보내기: Google Sheets, Airtable, Notion, Excel
Thunderbit은 CSV만이 아니라 Google Sheets, Airtable, Notion, Excel로의 무료 원클릭 내보내기를 제공해요. 반면 ChatGPT가 만든 스크립트는 보통 로컬 CSV나 JSON 파일만 써요. Sheets나 Airtable로 데이터를 보내려면 추가 라이브러리와 인증 코드가 필요하고요.
클라우드 스크래핑 vs 브라우저 스크래핑
Thunderbit에는 두 가지 모드가 있어요. 클라우드 스크래핑은 Thunderbit 서버에서 돌며 배치당 약 50페이지를 처리하고, 공개 사이트에 빨라요. 브라우저 스크래핑은 로그인 세션을 그대로 써서 접근 제한이 있거나 로그인 보호가 걸린 페이지를 처리해요. ChatGPT로 하려면 코드에서 프록시, 쿠키, 세션 처리를 직접 짜야 하는데, 각각이 별도의 디버깅 모험이 돼요.
내부적으로 Thunderbit은 ChatGPT, Gemini, Claude 등 여러 AI 모델을 거쳐 페이지를 시각적으로 읽고 무엇을 추출할지 판단해요. 즉 Thunderbit은 사실상 ChatGPT를 포함한 다른 최첨단 모델까지 함께 쓰면서, 요청, 렌더링, 봇 차단, 페이지네이션, 내보내기를 대신 처리해주는 셈이에요.
실제 활용 사례: 세일즈, 이커머스, 부동산
대부분의 ChatGPT 스크래핑 튜토리얼은 "Books to Scrape" 같은 장난감 사이트를 예로 들어요. 여기서는 실제 비즈니스 스크래핑이 어떤 모습인지, ChatGPT 방식과 Thunderbit 간편화 방식을 둘 다 볼게요.
비즈니스 디렉터리에서 세일즈 리드 추출
상황: 아웃바운드 세일즈를 위해 비즈니스 디렉터리에서 이름, 이메일, 전화번호가 필요해요.
ChatGPT 방식: 템플릿 1(목록 페이지)로 디렉터리를 스크래핑한 뒤, 템플릿 2(상세 페이지)로 각 프로필에 들어가 연락처를 가져와요. 이메일·전화번호 정규식 fallback, 예의 있는 지연, 중복 제거가 필요해요. 세팅과 디버깅에 30~60분쯤 잡으세요.
Thunderbit 방식: 디렉터리를 열고 "AI Suggest Fields"를 눌러 목록을 스크래핑한 뒤, "Scrape Subpages"로 각 프로필의 연락처 상세를 가져와요. CRM에 바로 넣을 수 있는 스프레드시트로 내보내면 끝. 총 3분쯤이에요. Thunderbit의 기본 email and phone extractors가 파싱을 알아서 해줘요.
이커머스 경쟁사 가격 모니터링
상황: 경쟁사의 상품 가격, 재고 여부, SKU를 주간 단위로 추적하고 싶어요.
ChatGPT 방식: 템플릿 1로 스크래퍼를 만들고, 템플릿 4로 페이지네이션을 더한 뒤, 매주 수동으로 실행해요. 경쟁사가 페이지 레이아웃을 바꾸면 선택자가 깨져 처음부터 다시 시작해야 하고요.
Thunderbit 방식: 스크래퍼를 한 번 설정한 뒤, Thunderbit의 예약 클라우드 스크래핑으로 매일 또는 매주 자동 실행하고 Google Sheets로 내보내요. 실행할 때마다 AI가 페이지 구조를 다시 읽으니 레이아웃이 바뀌어도 크게 문제 되지 않아요. 이 워크플로우는 price scraping guide에서 자세히 볼 수 있어요.
부동산 매물 데이터 수집
상황: 매물 사이트에서 가격, 주소, 침실/욕실 수, 담당자 정보를 모아야 해요.
ChatGPT 방식: 부동산 사이트 대부분(Zillow 스타일)은 React SPA이고 봇 차단도 강력해요. requests + BeautifulSoup 스크립트는 빈 페이지만 가져오고, Playwright 버전도 몇 분 안에 rate limit에 걸려요.
Thunderbit 방식: AI 필드 감지가 포함된 클라우드 스크래핑이 JavaScript 렌더링을 처리하고 레이아웃 변경에도 적응해요. 부동산 포털은 자주 개편되지만, Thunderbit의 AI가 매번 페이지를 새로 읽으니 선택자를 업데이트할 필요가 없어요. 자세한 과정은 real estate web scraping guide를 참고하세요.
일회성 스크래핑을 넘어서: ChatGPT API 파이프라인 vs Thunderbit Extract API
스크래핑을 제품이나 파이프라인에 넣으려면 질문이 달라져요. ChatGPT API로 HTML을 파싱할까, 아니면 스크래핑 전용 API를 쓸까?
ChatGPT API로 HTML 파싱하기
방식은 이래요. 로컬 크롤러(requests, Playwright)로 HTML을 가져온 뒤 OpenAI API에 보내 구조화된 JSON을 뽑아요. 규모가 큰 "HTML 붙여넣기" 우회 방식이라고 보면 돼요.
작동은 해요. 하지만 비용과 유지보수 부담은 현실이에요. GPT-4o 가격 기준으로 1,000페이지는 토큰 비용만 약 $95예요. 크롤러, 프록시, 프롬프트 엔지니어링, 출력 스키마까지 전부 직접 관리해야 하고요. 사이트가 바뀌면 프롬프트가 깨져 다시 손봐야 해요.
Thunderbit Extract API: 구조화된 웹 데이터를 위해 설계된 API
Thunderbit의 Open API는 다른 길을 줘요. JSON Schema를 정의하고 URL을 POST하면 구조화된 데이터를 돌려받아요. JavaScript 렌더링과 봇 차단 처리가 내장돼 있고요. 배치 처리도 요청당 최대 100개 URL을 지원해요.
| 기능 | ChatGPT API + 커스텀 코드 | Thunderbit Extract API |
|---|---|---|
| 구조화 출력 | 프롬프트 내 수동 스키마 | JSON Schema 기반 |
| JS 렌더링 | 직접 처리(Playwright 등) | 내장됨(다중 렌더 모드) |
| 봇 차단 / CAPTCHA | 직접 처리(프록시 등) | 자동 처리 |
| 배치 처리 | 루프를 직접 구현 | 배치 엔드포인트(최대 100 URL) |
| 유지보수 | 프롬프트와 코드가 쉽게 망가짐 | 관리형 AI 엔진 |
구조화된 웹 데이터를 서비스처럼 쓰되 스크래핑 파이프라인을 직접 유지보수하고 싶진 않은 팀에게는, Thunderbit API가 프로덕션에 더 빨리 닿는 길이에요. 추출당 크레딧 비용은 Thunderbit pricing을 참고하세요.
ChatGPT 웹 스크래핑 결과를 더 잘 얻는 팁
제가 시행착오로 배운 것들이에요.
프롬프트는 구체적으로 쓰세요. 늘 프로그래밍 언어, 라이브러리, 대상 URL, CSS 선택자, 출력 형식, 예외 상황 지시를 넣으세요. 모호한 프롬프트는 모호한 코드를 만들어요.
URL만 말고 HTML 스니펫을 붙여넣으세요. ChatGPT는 URL에 직접 못 들어가요. HTML 스니펫이 페이지 구조에 대한 유일한 진실이에요. 데이터 카드 하나의 20~40줄만 붙여도 정확도가 확 올라가요.
ChatGPT에게 린트와 최적화를 시키세요. 스크립트를 만든 뒤 "이 코드를 검토해서 오류를 잡고, 에러 처리를 추가하고, 성능을 최적화해 줘"라고 해보세요. 두 번째 패스에서 자기 실수를 꽤 잘 잡아내요.
항상 작은 샘플부터 테스트하세요. 1~2페이지로 먼저 돌린 뒤 확장하세요. 1페이지에서 깨진 선택자를 잡으면, 실패 요청 500번 뒤에 발견하는 참사를 막아줘요.
처음부터 다시 하지 말고 반복하세요. 첫 스크립트가 80% 맞다면, 결과를 다시 붙여넣고 나머지 20%를 고치게 하세요. ChatGPT는 반복 대화에서 가장 강해요.
ChatGPT 웹 스크래핑의 윤리와 법적 고려사항
법적인 면도 중요하니 짧게 정리할게요.
현재 미국 판례 기준으로, 공개적으로 접근 가능한 데이터를 스크래핑하는 건 연방법상 컴퓨터 범죄가 아니에요. hiQ v. LinkedIn 판결이 이를 확립했고, 2024년 1월의 Meta v. Bright Data ruling도 이를 뒷받침했어요. 판사는 Facebook과 Instagram의 공개·로그인 아웃 데이터를 스크래핑한 게 Meta 이용약관 위반이 아니라고 봤어요. 계정이 없는 방문자는 그 약관에 묶이는 "사용자"가 아니니까요.
다만 로그인이나 인증이 필요한 데이터, 또는 이용약관에 동의한 뒤 이를 어기는 스크래핑은 여전히 법적 위험이 될 수 있어요. 그리고 이메일이나 전화번호 같은 개인 데이터를 스크래핑하는 경우, 데이터 출처와 무관하게 EU의 개인정보보호법(GDPR)과 캘리포니아 개인정보 보호법(CCPA)이 적용돼요. 한국 사업자라면 개인정보보호법(PIPA)도 함께 챙겨야 하고요.
스크래핑 전에는 늘 robots.txt와 이용약관을 확인하세요. 요청 속도를 존중하고, 개인 데이터는 책임감 있게 다루세요. 그리고 준수 기능이 내장된 도구를 쓰세요. 예를 들어 Thunderbit은 robots.txt를 존중하고 책임 있는 데이터 관행을 기본으로 제공해요. 더 자세한 내용은 web scraping legal guide를 참고하세요.
ChatGPT를 웹 스크래핑에 언제 써야 하고, 언제 더 나은 도구를 찾아야 하나요?
ChatGPT는 웹 스크래핑에 정말 강력한 도구예요. 빠른 프로토타입을 만들고 스크래핑이 안에서 어떻게 도는지 배우는 데 특히 좋아요. 단순한 정적 페이지에서 한 번만 돌릴 스크립트라면 대체하기 어렵고요.
하지만 운영 수준, 반복 실행, 대규모 스크래핑이 필요하고 특히 개발자가 아니라면, Thunderbit 같은 목적 특화 도구가 더 빠르고 안정적이며 유지보수도 필요 없어요. 엔터프라이즈 규모의 엔지니어링 프로젝트라면 프록시 인프라를 갖춘 커스텀 코드가 완전한 제어권을 주고요.
제가 쓰는 선택 기준은 이래요.
- 빠른 일회성 작업, 학습, 프로토타이핑: ChatGPT + Python
- 비개발자, 노코드, 반복 스크래핑: Thunderbit Chrome Extension
- 개발자 파이프라인, 구조화된 API 접근: Thunderbit API
- 엔터프라이즈 규모, 완전한 제어: 커스텀 코드 + 프록시 + 오케스트레이션
노코드 방식을 한번 써보고 싶다면 Thunderbit은 무료 플랜이 있으니 작은 규모에서 직접 결과를 확인해볼 수 있어요. 도구가 실제로 어떻게 도는지 보고 싶다면, YouTube 채널에서 사용 사례별 가이드를 볼 수 있고요.
AI 웹 스크래핑을 위해 Thunderbit 사용해 보기 Get Started Free
자주 묻는 질문
ChatGPT가 정말 혼자서 웹사이트를 스크래핑할 수 있나요?
아니요. ChatGPT는 스크래핑 코드를 만들거나 사용자가 준 HTML을 파싱할 순 있지만, URL에 접속하거나 페이지를 가져오거나 스크립트를 실행하진 못해요. 2025년 10월 나온 내장 브라우저 ChatGPT Atlas도 대화형 브라우징 보조 도구일 뿐, 500행짜리 CSV를 구조화해 내주진 않아요.
ChatGPT 웹 스크래핑은 무료인가요?
ChatGPT 무료 플랜으로 스크래핑 코드를 만드는 건 돈이 안 들어요. 하지만 코드를 실행하려면 Python과 라이브러리가 필요하고(이것도 무료), OpenAI API로 HTML을 대량 파싱하면 토큰 비용이 생겨요. GPT-4o mini 기준 1,000페이지당 약 $6.50, GPT-4o 기준 약 $95쯤 잡으면 돼요. 프록시와 인프라는 별도고요.
ChatGPT가 생성한 웹 스크래퍼에 가장 좋은 Python 라이브러리는 무엇인가요?
정적 HTML 페이지라면 requests와 BeautifulSoup 조합이 가장 간단하고 빨라요. JavaScript로 렌더링되는 페이지라면 Playwright가 요즘 선택이에요. Selenium보다 빠르고(페이지 로드당 약 2.9초 vs. 4.8초) API도 더 깔끔해요. Selenium은 주로 레거시 프로젝트에 쓸모가 있고요.
코딩 없이 ChatGPT로 데이터를 스크래핑할 수 있나요?
직접적으로는 안 돼요. ChatGPT는 코드를 만들지만, 실행은 여전히 사용자 몫이에요. 완전한 노코드를 원한다면 Thunderbit 같은 도구로 두 번 클릭이면 스크래핑할 수 있어요. Python도, 터미널도, 디버깅도 필요 없어요. AI가 제안하는 필드, Google Sheets·Airtable로의 원클릭 내보내기, JS 렌더링과 봇 차단에 대한 내장 처리까지 제공하고요.
ChatGPT가 만든 코드로 웹사이트를 스크래핑하는 것은 합법인가요?
현재 미국 판례 기준으로 공개되고 로그인하지 않은 데이터를 스크래핑하는 건 일반적으로 합법이에요(hiQ v. LinkedIn, Meta v. Bright Data). 하지만 게이트된 콘텐츠를 스크래핑하거나, 사이트 이용약관을 어기거나, 이메일·전화번호 같은 개인 데이터를 잘못 다루면 계약법이나 GDPR, CCPA, 한국 PIPA 같은 개인정보 규정상 법적 위험이 생길 수 있어요. 스크래핑 전에는 늘 robots.txt와 사이트 이용약관을 확인하세요.
더 알아보기


