코드 한 줄 없이 웹 스크래핑하기: Scraperr 완벽 가이드

  • 카카오톡 공유하기
  • 네이버 블로그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 트위터 공유하기
  • 링크 복사하기

웹 스크래핑은 데이터 분석, 마케팅 리서치, 가격 모니터링 등 다양한 분야에서 필수적인 작업입니다. 때문에 요즘 오픈소스 스크래퍼 또는 크롤링 도구들이 많이 요구 됩니다. 오늘 소개할 어플리케이션도 이 웹스크래핑을 위한 셀프호스트 기반의 웹스크래퍼 인 Scraperr에 대한 포스트를 하려고 합니다.

RAG 시스템에 웹사이트의 컨텐츠를 Ingest하기 위해서는 웹사이트의 데이터 스크래핑이 반드시 요구 됩니다. 그 과정에서 여러 크롤러 또는 스크래퍼들을 찾아보다가 직접 만들어보기도 했습니다. 웹 페이지의 특정 요소를 정교하게 스크래핑을 하거나, 또는 URL의 수집 범위 , 제외 범위 등의 정교한 설정에 어려움이 많았습니다. 또한 백그라운드 실행을 하다가 중간에 멈췄을 때 이어서 스크래핑을 하는 방법 등 미리 고려해야할 것들이 많습니다.

이러한 고민들이 한꺼번에 반영된 도구라 할 수 있을것 같습니다.

Scraperr란?

<출처: https://github.com/jaypyles/Scraperr, Scraperr>

Scraperr는 셀프 호스팅 방식의 웹 스크래핑 서비스로, 복잡한 코딩 없이도 웹사이트에서 데이터를 추출하고 데이터베이스에 저장할 수 있게 해줍니다. MIT 라이선스로 오픈소스로 공개되어 있으며, Docker를 통해 손쉽게 배포할 수 있습니다.

Scraperr의 가장 큰 장점은 사용자 친화적인 웹 인터페이스입니다. 프론트엔드가 API와 분리되어 있어, 웹 UI를 통해 사용할 수도 있고, 다른 애플리케이션에서 API를 직접 호출할 수도 있습니다.

주요 기능

1. XPath 기반 정밀 추출

XPath 선택자를 사용하여 원하는 페이지 요소를 정확하게 타겟팅할 수 있습니다. 복잡한 HTML 구조에서도 정확히 필요한 데이터만 추출할 수 있죠.

2. 작업 큐 관리

여러 개의 스크래핑 작업을 큐에 제출하고 관리할 수 있습니다. 작업 테이블에서는 모든 스크래핑 작업의 상태를 실시간으로 확인할 수 있으며, ID, URL, 상태별로 필터링하여 검색할 수 있습니다. 중요한 작업은 즐겨찾기로 표시하여 나중에 쉽게 찾을 수 있습니다.

3. 도메인 스파이더링

동일 도메인 내의 모든 페이지를 자동으로 크롤링하는 멀티 페이지 스크래핑 기능을 제공합니다. 여러 페이지에 걸쳐 있는 데이터를 한 번에 수집할 수 있습니다.

4. 사이트 맵핑 (Site Mapping)

웹사이트를 스크래핑할 때 일련의 액션을 자동화할 수 있는 강력한 기능입니다. 예를 들어:

  • “다음” 버튼을 클릭하여 여러 페이지 탐색
  • 입력 필드에 데이터 입력
  • 특정 요소 클릭하여 숨겨진 콘텐츠 표시

각 액션은 XPath 선택자를 사용하여 정의하며, “한 번만 실행” 옵션을 통해 첫 페이지에서만 실행되도록 설정할 수도 있습니다.

5. 미디어 자동 다운로드

스크래핑 과정에서 발견된 이미지, 비디오, 문서 등 모든 미디어 파일을 자동으로 다운로드합니다. 원본 파일명과 형식을 유지하며 구조화된 디렉토리에 정리됩니다.

6. AI 통합

OpenAI GPT 모델이나 Ollama를 연결하여 수집된 데이터에 대해 자연어로 질문할 수 있습니다. 각 작업별로 채팅이 저장되어, 스크래핑한 데이터를 더 효과적으로 분석하고 인사이트를 얻을 수 있습니다.

7. 고급 설정 옵션

커스텀 헤더: JSON 형식으로 커스텀 헤더를 추가하여 User-Agent 설정, 인증 헤더 추가 등이 가능합니다.

쿠키 관리: 인증이 필요한 콘텐츠에 접근하거나 세션을 유지해야 할 때 커스텀 쿠키를 JSON 형식으로 제공할 수 있습니다.

프록시 지원: 쉼표로 구분된 프록시 목록을 제공하여 속도 제한 회피, 지역 제한 콘텐츠 접근, 여러 IP로 요청 분산이 가능합니다.

8. 데이터 내보내기

수집된 데이터는 CSV나 Markdown 형식으로 내보낼 수 있어, 스프레드시트나 다른 분석 도구에서 바로 활용할 수 있습니다.

9. 알림 채널

작업 완료 시 Discord 웹훅이나 SMTP 이메일을 통해 알림을 받을 수 있습니다. 장시간 실행되는 스크래핑 작업도 안심하고 맡길 수 있습니다.

빠른 시작

Scraperr를 시작하는 것은 매우 간단합니다:

이제 http://localhost로 접속하면 Scraperr 웹 인터페이스가 나타납니다.

첫 스크래핑 작업 제출하기

  1. URL 입력: 스크래핑하고 싶은 웹사이트의 URL을 입력합니다.
  2. 요소 선택: 테이블이 나타나면 추출하려는 데이터의 이름과 XPath 선택자를 입력합니다.
  3. 고급 옵션 설정: 필요하다면 사이트 맵핑, 커스텀 헤더, 프록시 등을 설정합니다.
  4. 제출: 작업이 큐에 추가되고 작업 테이블로 이동합니다.
  5. 결과 다운로드: 작업이 완료되면 “Download” 버튼을 클릭하여 CSV 파일로 결과를 받습니다.

선택적 구성

Scraperr는 다양한 환경에 맞게 커스터마이징할 수 있습니다:

사용자 등록 비활성화: REGISTRATION_ENABLED=False로 설정하여 관리자만 접근하도록 제한할 수 있습니다.

데이터베이스 선택: 기본 SQLite 외에도 PostgreSQL, MySQL을 지원합니다.

녹화 비활성화: 스크래핑 과정의 비디오 녹화를 끌 수 있습니다.

VNC 연결: 5900 포트를 노출하여 VNC 뷰어로 브라우저 세션을 직접 모니터링할 수 있습니다.

Helm 배포

Kubernetes 환경에서 운영하고 싶다면 Helm 차트를 사용하여 쉽게 배포할 수 있습니다. 자세한 내용은 공식 문서를 참고하세요.

윤리적 웹 스크래핑을 위한 주의사항

Scraperr는 강력한 도구이지만, 책임감 있게 사용해야 합니다:

  • robots.txt 존중: 항상 웹사이트의 robots.txt 파일을 확인하여 스크래핑이 허용되는지 확인하세요.
  • 서비스 약관 준수: 각 웹사이트의 서비스 약관을 준수하세요.
  • 속도 제한: 요청 간 적절한 지연을 두어 서버에 과부하를 주지 않도록 하세요.

Scraperr는 명시적으로 스크래핑을 허용하는 웹사이트에서만 사용하도록 설계되었습니다.

마치며

Scraperr는 웹 스크래핑의 진입 장벽을 크게 낮춘 혁신적인 도구입니다. 코딩 지식 없이도 강력한 데이터 수집 파이프라인을 구축할 수 있으며, AI 통합을 통해 수집한 데이터를 즉시 분석할 수 있습니다.

셀프 호스팅 방식이라 데이터 프라이버시도 보장되며, API를 통해 다른 애플리케이션과 통합하기도 쉽습니다. 데이터 분석가, 마케터, 연구자, 개발자 모두에게 유용한 도구가 될 것입니다.

특히, 섬세한 지정영역 의 수집이라거나, 입력 이벤트를 고려한 수집에 특화되어 보이고, Cron tab 설정으로 정기적인 수집에는 매우 편리한 도구가 될것 같습니다.

다소 아쉬운 부분은 다음과 같습니다.

  • 진행에 대한 상태를 알수가 없기 때문에 프로세스가 종료될 때까지 기다려야 합니다.
  • 동일 도메인 내에서 세부 분리된 설정이 불가능합니다. 특정 디렉토리를 제외한다거나, 특정 유형의 페이지를 제외할수 없습니다.
  • 수집간 실패 시 원인을 찾아 대처하기 어렵습니다.
  • 통계의 반영이 즉각적으로 이루어지지 않습니다.

좀 더 자세한 내용은 GitHub를 참고해보세요!


참고 자료


게시됨

카테고리

작성자

댓글

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다