Skip to main content
웹 스크래퍼는 하나의 기능이 아니라 파이프라인입니다. Python으로 직접 작성하거나, 헤드리스 브라우저를 구동하거나, 노코드 도구에서 시각적으로 구축하더라도 같은 단계가 같은 순서로 진행됩니다. 각 단계를 이해하면 스크래퍼가 어디서 중단되고 느려지는지, 어떤 기법으로 문제를 해결할 수 있는지 훨씬 쉽게 파악할 수 있습니다.
1

페이지 가져오기

HTTP 요청을 보내고 HTML을 받습니다.
2

페이지 렌더링

실제 브라우저에서 페이지의 JavaScript를 실행합니다.
3

데이터 위치 찾기

XPath 또는 CSS 선택자로 요소를 지정합니다.
4

추출 및 정제

값을 가져와 정규식으로 정제합니다.
5

사이트 탐색

페이지 넘기기와 로그인 장벽을 처리합니다.
6

결과 저장

CSV, JSON, 데이터베이스 또는 다운스트림 API에 저장합니다.
처음 다섯 단계는 모든 페이지에서 순서대로 실행됩니다. 사이트 탐색은 다음 페이지의 페이지 가져오기 단계로 되돌아가며, 이 전체 루프가 클라우드에서 로테이션 프록시를 사용하고 CAPTCHA를 통과하면서 대규모로 실행됩니다.

페이지 가져오기

모든 작업은 요청에서 시작됩니다. 스크래퍼가 URL에 HTTP 요청을 보내 응답을 받으며, 응답은 일반적으로 HTML이고 때로는 JSON입니다. 단순한 서버 렌더링 페이지라면 이 한 단계로 필요한 모든 데이터를 얻을 수 있습니다. 다만 응답은 서버가 보내는 초기 페이로드일 뿐이며, 최신 사이트 중에는 내용이 거의 없는 셸만 보내는 곳도 많습니다.

페이지 렌더링

사이트가 JavaScript로 콘텐츠를 구성하면 원하는 데이터는 초기 HTML에 없고 페이지 스크립트가 실행된 후에만 나타납니다. 렌더링 단계에서는 실제 브라우저에서 해당 스크립트를 실행하여 전체 콘텐츠를 표시합니다. 여기서 사용하는 브라우저 런타임은 페이지가 얼마나 충실하게 로드되는지와 메모리 및 속도 비용을 결정하며, JavaScript 렌더링 페이지 스크래핑의 핵심입니다.

데이터 위치 찾기

페이지가 완전히 로드되면 스크래퍼는 가격, 제목, 표의 행처럼 원하는 특정 항목을 가리켜야 합니다. XPath 또는 CSS 선택자는 페이지 구조에서 요소의 위치를 설명합니다. 좋은 선택자는 사소한 레이아웃 변경에도 견디는 스크래퍼와 사이트가 업데이트될 때마다 중단되는 스크래퍼를 가릅니다.

추출 및 정제

요소를 찾으면 원시 콘텐츠를 얻을 수 있고, 추출은 그 값을 가져오며, 정제는 값을 깔끔하게 다듬습니다. 스크래핑한 가격이 "$1,299.00 USD"로 들어왔지만 숫자만 필요할 수 있습니다. 정규식과 후처리 규칙을 사용하면 원시 텍스트를 제거, 분할, 재구성하여 실제로 저장하려는 구조화된 필드로 만들 수 있습니다.

사이트 탐색

대부분의 데이터세트는 여러 페이지에 걸쳐 있습니다. 스크래퍼는 다음 페이지 링크, “더 보기” 버튼, 무한 스크롤 같은 페이지 넘기기를 따라 모든 레코드에 도달해야 합니다. 일부 콘텐츠는 로그인 장벽 뒤에 있으므로, 앞선 단계를 실행하기 전에 스크래퍼가 인증을 통과해야 합니다.

대규모 실행

노트북에서 한 번 작동한 스크래퍼도 수천 번의 실행을 견뎌야 합니다. 클라우드에서 실행하면 컴퓨터를 점유하지 않고 작업을 지속할 수 있습니다. 로테이션 프록시는 여러 IP 주소로 요청을 분산하여 사이트의 속도 제한이나 차단을 피합니다. CAPTCHA와 안티봇 서비스는 이 단계에서 처리해야 할 장애물입니다.

결과 저장

마지막으로 추출 데이터는 CSV 또는 Excel 파일, JSON 내보내기, 데이터베이스, 다운스트림 API 등 활용 가능한 위치에 저장됩니다. 이 단계에서 스크래핑 실행 결과가 데이터세트로 완성됩니다.

Octoparse의 역할

직접 코딩한 스크래퍼에서는 요청 라이브러리, 브라우저 드라이버, 선택자 엔진, 정제 코드, 페이지 넘기기 로직, 프록시 관리, 내보내기 단계를 직접 연결해야 합니다. Octoparse는 전체 파이프라인을 하나의 시각적 워크플로로 통합합니다. 가리키고 클릭하여 선택자를 설정하면 렌더링, 페이지 넘기기, 프록시 로테이션, 클라우드 추출, 데이터 내보내기 기능이 기본 제공되어 코딩 대신 설정으로 사용할 수 있습니다. 단계는 같지만 각 단계가 실행되는 방법을 설계하는 대신 수집할 대상을 지정한다는 점이 다릅니다.