Skip to content

Web Scraping

웹 스크래핑(web scraping), 웹 하베스팅(web harvesting) 또는 웹 데이터 추출(web data extraction)은 웹사이트에서 데이터를 추출하는 데 사용되는 데이터 스크래핑이다. 웹 스크래핑 소프트웨어는 HTTP 또는 웹 브라우저를 사용하여 월드 와이드 웹에 직접 액세스할 수 있다. 웹 스크래핑은 소프트웨어 사용자가 수동으로 수행할 수 있지만 이 용어는 일반적으로 봇이나 웹 크롤러를 사용하여 구현된 자동화된 프로세스를 의미한다. 이는 나중에 검색하거나 분석하기 위해 특정 데이터를 수집하고 웹에서 일반적으로 중앙 로컬 데이터베이스나 스프레드시트로 복사하는 복사 형식이다.

웹페이지를 스크랩하는 작업에는 웹페이지를 가져오고 추출하는 작업이 포함된다. 가져오기는 페이지를 다운로드하는 것이다(사용자가 페이지를 볼 때 브라우저가 수행함). 따라서 웹 크롤링은 나중에 처리하기 위해 페이지를 가져오는 웹 스크래핑의 주요 구성 요소이다. 가져온 후에는 추출이 수행될 수 있다. 페이지의 콘텐츠를 구문 분석하고, 검색하고, 형식을 다시 지정할 수 있으며, 해당 데이터는 스프레드시트에 복사되거나 데이터베이스에 로드될 수 있다. 웹 스크레이퍼는 일반적으로 페이지에서 무언가를 가져와 다른 곳에서 다른 목적으로 사용한다. 이름과 전화번호, 회사와 URL, 이메일 주소를 찾아 목록에 복사하는 것이 그 예이다(연락처 스크래핑).

연락처 스크래핑 외에도 웹 스크래핑은 웹 인덱싱, 웹 마이닝 및 데이터 마이닝, 온라인 가격 변동 모니터링 및 가격 비교, 제품 리뷰 스크래핑(경쟁 시청), 부동산 목록 수집, 날씨, 데이터 모니터링, 웹사이트 변경 감지, 연구, 온라인 존재 및 평판 추적, 웹 매시업, 웹 데이터 통합 등에 사용되는 애플리케이션의 구성 요소로 사용된다. 시중에서 인기있는 웹 스크래핑 도구는 Octoparse, listly, hashscraper 등이 있다.

웹 페이지는 텍스트 기반 마크업 언어(HTML 및 XHTML)를 사용하여 구축되며 유용한 데이터가 텍스트 형식으로 포함되어 있는 경우가 많다. 그러나 대부분의 웹 페이지는 인간 최종 사용자를 위해 설계되었으며 자동화된 사용이 용이하도록 설계되지 않았다. 그 결과, 웹페이지 스크래핑을 용이하게 하는 특수 도구와 소프트웨어가 개발되었다.

최신 형태의 웹 스크래핑에는 웹 서버의 데이터 피드 모니터링이 포함된다. 예를 들어 JSON은 일반적으로 클라이언트와 웹 서버 간의 전송 메커니즘으로 사용된다.

일부 웹사이트에서는 봇이 페이지를 크롤링(보기)하는 것을 감지하고 차단하는 등 웹 스크래핑을 방지하기 위해 사용하는 방법이 있다. 이에 대한 대응으로 DOM 구문 분석, 컴퓨터 비전 및 자연어 처리 기술을 사용하여 사람의 탐색을 시뮬레이션하여 오프라인 구문 분석을 위한 웹 페이지 콘텐츠를 수집하는 웹 스크래핑 시스템이 있다.

최첨단 웹 스크래핑 기술들

Git 스크래핑

  • Git 스크래퍼란?
    • GitHub Actions를 사용해 웹사이트나 리소스를 정기적으로 스크래핑하고 변경 사항 기록 가능
    • GitHub 저장소에서 템플릿 Repo를 이용해서 복제한뒤 쉽게 설정 가능
    • 특정 웹사이트 URL 또는 JSON 파일 URL을 입력하면 매일 자동으로 실행됨
  • 저장소의 커밋 페이지 URL에 .atom을 추가하면 RSS 피드 생성 가능
    • RSS 리더를 통해 웹사이트의 변경 사항 실시간 확인 가능

브라우저 내 JavaScript 스크래핑

  • 복잡한 웹사이트는 단순 HTML 파싱만으로는 데이터 추출이 어려움
  • 실제 브라우저에서 페이지 로딩 후 JavaScript를 사용해 스크래핑 가능
  • 테이블 데이터 추출: 브라우저 개발자 도구에서 JavaScript를 사용해 테이블 데이터를 JSON으로 변환 가능
  • 무한 스크롤 페이지 처리: JavaScript로 페이지에서 지속적으로 추가되는 콘텐츠를 자동 수집 가능
  • Shot-scraper를 사용한 자동화:
    • 특정 명령어를 통해 전체 웹페이지 스크린샷 캡처 가능
    • JavaScript 코드 실행 후 JSON 형식으로 데이터 출력 가능

LLM을 이용한 구조화된 데이터 추출

  • LLM(Large Language Model)을 사용해 비정형 데이터를 구조화된 데이터로 변환 가능
  • OpenAI 및 Google Gemini API 키 필요
  • Codespaces 또는 로컬 Python 환경에서 실행 가능
  • 스키마를 통한 데이터 추출
    • 스키마(schema)란 LLM이 반환할 데이터의 형식을 정의하는 것
    • 예를 들어, 제목, URL, 날짜 등을 스키마에 정의해 일관된 형식으로 데이터 추출 가능
    • 웹페이지에서 데이터를 스크래핑할 때 스키마 기반으로 출력 가능
  • 비용 계산 및 모델 선택
    • 모델마다 입력 및 출력 토큰 수에 따라 비용 발생
    • GPT-4o mini 모델은 저렴하지만 다른 모델은 비용이 비쌀 수 있음
    • 예를 들어 GPT-4.5 모델은 같은 작업에 대해 훨씬 높은 비용이 발생할 수 있음
    • Gemini 모델은 상대적으로 저렴하며 다양한 옵션 제공
  • PDF에서 데이터 추출
    • FEMA Daily Operations Briefing 같은 PDF 문서에서 데이터 추출 가능
    • Gemini 모델은 PDF 파일을 입력받아 구조화된 JSON 형식으로 출력 가능
    • PDF에서 특정 표나 텍스트 추출 가능
  • 이미지에서 데이터 추출
    • GPT-4o는 이미지에서 데이터를 추출할 수 있음
    • 스크린샷을 모델에 입력해 구조화된 데이터 출력 가능
  • 모델 선택 팁
    • Gemini 2.0 Pro 모델은 무료이지만 엄격한 속도 제한이 존재
    • 비용 효율성과 성능을 고려해 여러 모델을 테스트하고 선택해야 함
    • 웹페이지 특성에 따라 LLM보다는 shot-scraper가 더 유용할 수 있음
  • 복잡한 데이터 처리 도전 과제
    • 복잡한 인포그래픽이나 지도에서 데이터 추출 시 모델 성능이 다를 수 있음
    • 다양한 모델을 시도해 최적의 성능을 보이는 모델 선택 필요

Google AI Studio를 이용한 비디오 스크래핑

  • 비디오 스크래핑은 일반적인 스크래핑이 어려운 웹사이트에서 데이터를 추출할 수 있는 강력한 방법
  • Google Gemini 모델은 비디오 입력을 받아 JSON 형식의 구조화된 데이터로 변환 가능
  • 화면 녹화 후 해당 비디오를 AI 모델에 입력해 데이터 추출 가능
  • 비디오 스크래핑 과정
    • 웹사이트에서 원하는 데이터를 포함한 섹션으로 이동
    • 화면 녹화 도구(예: QuickTime Player) 실행
    • 웹사이트 탐색 → 중요한 부분에서 잠시 멈춤
    • 녹화된 비디오를 Google AI Studio에 업로드
    • AI Studio에서 모델 프롬프트 작성 및 데이터 추출
    • 스키마 추출 도구를 사용해 JSON 형식으로 데이터 구성 가능
  • 비디오 스크래핑의 장점
    • 복잡한 웹사이트 구조를 우회 가능
    • JavaScript 렌더링이 필요한 사이트에서 유용함
    • 페이지 내 다양한 데이터(텍스트, 표, 이미지 등) 추출 가능
  • 주의사항
    • AI Studio에서 제공하는 기능은 대부분 무료이지만, 입력된 데이터가 훈련에 사용될 수 있음
    • 보안이 중요한 데이터는 입력하지 않는 것이 좋음
    • 복잡한 웹사이트의 경우 비디오 스크래핑이 다른 스크래핑 기법보다 더 효율적일 수 있음
  • 실시간 스트리밍 옵션
    • AI Studio의 Stream Realtime 옵션을 사용하면 실시간 데이터 추출 가능
    • 스크래핑이 어려운 동적 콘텐츠에서도 효과적일 수 있음
  • 뉴스룸에서의 적용
    • 뉴스룸에서 복잡한 데이터 추출 및 자동화에 유용
    • Gemini 모델의 성능과 정확도를 테스트해 최적의 방식 도출 가능
    • 워크숍 이후에도 협업 및 피드백 가능

추가 도구 및 자료

List of local files

ZetCode, tutorials for programmers
http://zetcode.com/
Zetcode.com-170124.zip
wxPython, wxWidgets
Commonly used features in a side-by-side format
http://hyperpolyglot.org/
Hyperpolyglot.org.zip
Programming language

See also

Favorite site