Course repository for the Fall 2025 Project-Based Learning (PBL) class.
인사동 주요 갤러리 웹사이트에서 **현재 전시중(Current Exhibition)**인 정보를 수집하여 프로젝트 데이터베이스(PostgreSQL)에 적재하는 크롤링 모듈입니다.
정적 페이지는 BeautifulSoup으로 가볍게 처리하고, 동적 렌더링이 필요한 사이트는 Playwright를 사용하여 하이브리드 방식으로 수집합니다. 특히, 비정형 텍스트 데이터(작품 설명, 작가 정보 등)는 GPT API를 활용하여 정밀하게 구조화하였습니다.
- Static Sites:
BeautifulSoup4를 사용하여 속도 최적화 - Dynamic Sites:
Playwright를 사용하여 JavaScript 렌더링 및 인터랙션(클릭, 스크롤) 처리
- 갤러리마다 제각각인 전시 설명 텍스트(
<p>태그 뭉치)를 GPT API에 전송하여 정형 데이터로 변환 - 추출 필드:
전시 소개(Description),참여 작가(Artists),전시장 위치/층수(Location)등을 자동으로 분리 및 분류
- 수집된 데이터를 관계형 데이터베이스(PostgreSQL) 스키마에 맞춰 자동 적재 및 중복 방지 처리
현재 총 6곳의 주요 갤러리에 대한 크롤러 구현 및 데이터 적재 테스트를 완료했습니다.
- 갤러리 은 (Gallery Eun)
- 갤러리 인사아트 (Gallery Insa Art)
- 인사 1010 (Insa 1010)
- 인사아트 (Insa Art)
- 마루아트센터 (Maru Art Center)
- 통인 갤러리 (Tongin Gallery)
- 갤러리 밈 (Gallery MEME)
- 올미아트스페이스 (All Me Art Space)
- 노화랑 (Rho Gallery)
- 서울 노인 복지센터 (Seoul Noin)
- 선화랑 (Sun Gallery)
이 프로젝트는 Python 3.x 환경에서 실행됩니다.
# 필수 패키지 설치
pip install -r requirements.txt
# Playwright 브라우저 바이너리 설치 (필수)
playwright install