# 최첨단 웹 스크래핑 기술들

> Clean Markdown view of GeekNews topic #19723. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=19723](https://news.hada.io/topic?id=19723)
- GeekNews Markdown: [https://news.hada.io/topic/19723.md](https://news.hada.io/topic/19723.md)
- Type: news
- Author: [xguru](https://news.hada.io/@xguru)
- Published: 2025-03-13T11:11:01+09:00
- Updated: 2025-03-13T11:11:01+09:00
- Original source: [github.com/simonw](https://github.com/simonw/nicar-2025-scraping/)
- Points: 36
- Comments: 3

## Summary

Simon Willison이 데이터 저널리즘 컨퍼런스에서 진행한 워크숍으로 GitHub Actions를 활용한 Git 스크래핑, JavaScript를 이용한 브라우저 내 스크래핑, LLM을 통한 구조화된 데이터 추출, Google AI Studio를 활용한 비디오 스크래핑 방법을 다루고 있습니다. Git 스크래핑은 웹사이트의 변경 사항을 자동으로 기록할 수 있으며, JavaScript를 사용하면 복잡한 웹사이트에서 데이터를 효과적으로 추출할 수 있습니다. 또한, LLM과 Google AI Studio를 활용하면 비정형 데이터나 비디오에서 구조화된 데이터를 추출할 수 있으며, 이러한 기술들은 뉴스룸에서 복잡한 데이터 추출 및 자동화에 유용하게 사용될 수 있습니다.

## Topic Body

- **비디오 스크래핑:** 화면 캡처 비디오를 Google Gemini 모델에 입력해 구조화된 데이터로 변환  
- **이미지 모델 사용:** Gemini, GPT-4o, Claude 3.7등을 사용해 이미지 및 구조화되지 않은 PDF에서 데이터 추출  
- **Playwright 등 최신 라이브러리 활용:** 브라우저 자동화 수행. 비디오/이미지 분석 모델과 통합하여 사용   
  
* Simon Willison이 데이터 저널리즘 컨퍼런스 NICAR 2025에서 진행한 1시간 짜리 인터랙티브 워크샵   
  
### 워크숍 구성  
#### 1. Git 스크래핑  
- **Git 스크래퍼란?**  
  - GitHub Actions를 사용해 웹사이트나 리소스를 정기적으로 스크래핑하고 변경 사항 기록 가능  
  - GitHub 저장소에서 템플릿 Repo를 이용해서 복제한뒤 쉽게 설정 가능  
  - 특정 웹사이트 URL 또는 JSON 파일 URL을 입력하면 매일 자동으로 실행됨  
- 저장소의 커밋 페이지 URL에 `.atom`을 추가하면 RSS 피드 생성 가능  
  - RSS 리더를 통해 웹사이트의 변경 사항 실시간 확인 가능  
  
#### 2. 브라우저 내 JavaScript 스크래핑  
- 복잡한 웹사이트는 단순 HTML 파싱만으로는 데이터 추출이 어려움  
- 실제 브라우저에서 페이지 로딩 후 JavaScript를 사용해 스크래핑 가능  
- **테이블 데이터 추출:** 브라우저 개발자 도구에서 JavaScript를 사용해 테이블 데이터를 JSON으로 변환 가능  
- **무한 스크롤 페이지 처리:** JavaScript로 페이지에서 지속적으로 추가되는 콘텐츠를 자동 수집 가능  
- **Shot-scraper를 사용한 자동화:**  
  - 특정 명령어를 통해 전체 웹페이지 스크린샷 캡처 가능  
  - JavaScript 코드 실행 후 JSON 형식으로 데이터 출력 가능  
  
#### 3. 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**가 더 유용할 수 있음  
- 복잡한 데이터 처리 도전 과제  
  - 복잡한 인포그래픽이나 지도에서 데이터 추출 시 모델 성능이 다를 수 있음  
  - 다양한 모델을 시도해 최적의 성능을 보이는 모델 선택 필요  
  
#### 4. Google AI Studio를 이용한 비디오 스크래핑  
- **비디오 스크래핑**은 일반적인 스크래핑이 어려운 웹사이트에서 데이터를 추출할 수 있는 강력한 방법  
- Google Gemini 모델은 비디오 입력을 받아 JSON 형식의 구조화된 데이터로 변환 가능  
- 화면 녹화 후 해당 비디오를 AI 모델에 입력해 데이터 추출 가능  
- 비디오 스크래핑 과정  
  1. 웹사이트에서 원하는 데이터를 포함한 섹션으로 이동  
  2. 화면 녹화 도구(예: QuickTime Player) 실행  
  3. 웹사이트 탐색 → 중요한 부분에서 잠시 멈춤  
  4. 녹화된 비디오를 **Google AI Studio**에 업로드  
  5. AI Studio에서 모델 프롬프트 작성 및 데이터 추출  
  6. 스키마 추출 도구를 사용해 JSON 형식으로 데이터 구성 가능  
- 비디오 스크래핑의 장점  
  - 복잡한 웹사이트 구조를 우회 가능  
  - JavaScript 렌더링이 필요한 사이트에서 유용함  
  - 페이지 내 다양한 데이터(텍스트, 표, 이미지 등) 추출 가능  
- 주의사항  
  - AI Studio에서 제공하는 기능은 대부분 무료이지만, 입력된 데이터가 훈련에 사용될 수 있음  
  - 보안이 중요한 데이터는 입력하지 않는 것이 좋음  
  - 복잡한 웹사이트의 경우 비디오 스크래핑이 다른 스크래핑 기법보다 더 효율적일 수 있음  
- 실시간 스트리밍 옵션  
  - AI Studio의 **Stream Realtime** 옵션을 사용하면 실시간 데이터 추출 가능  
  - 스크래핑이 어려운 동적 콘텐츠에서도 효과적일 수 있음  
- 뉴스룸에서의 적용  
  - 뉴스룸에서 복잡한 데이터 추출 및 자동화에 유용  
  - Gemini 모델의 성능과 정확도를 테스트해 최적의 방식 도출 가능  
  - 워크숍 이후에도 협업 및 피드백 가능  
  
### 추가 도구 및 자료  
- **[git-scraper-template](https://github.com/simonw/git-scraper-template)** – Git 스크래핑 설정 템플릿  
- **[shot-scraper-template](https://github.com/simonw/shot-scraper-template)** – 웹페이지 스크린샷 자동화 템플릿  
- **[shot-scraper har](https://shot-scraper.datasette.io/en/stable/har.html)** - HTML 아카이브 생성. `--zip` 으로 압축 파일도 생성(JSON 및 기타 애셋들 포함)  
- **[git-history](https://github.com/simonw/git-history)** – Git 커밋 로그를 SQLite 데이터베이스로 변환

## Comments



### Comment 35960

- Author: roxie
- Created: 2025-03-16T14:19:15+09:00
- Points: 1

흠.. GitHub Actions 를 이용한 건 GitHub 정책 위반일 것 같네요

### Comment 35877

- Author: lighteach
- Created: 2025-03-14T11:38:16+09:00
- Points: 1

안드로이드용도 있으면 참 좋을텐데

### Comment 35816

- Author: wantutopia
- Created: 2025-03-13T11:40:48+09:00
- Points: 1

매크로 방지 회피기능을 갖추면.. 시장의 승자가 될 것 같습니다.
