피드로 돌아가기
Dev.toBackend
원문 읽기
Python과 BeautifulSoup을 이용해 Bandcamp의 공개 HTML 데이터를 파싱해 아티스트 정보, 디스코그래피, 가격 데이터를 추출하는 웹 스크래핑 구현
Bandcamp Artist Data Scraping: Music Research and Analytics
AI 요약
Context
Bandcamp는 수백만 명의 독립 아티스트가 팬에게 직접 음악을 판매하는 플랫폼이지만 공개 API가 없어 음악 연구원, 레이블 스카우트, 분석팀이 데이터에 접근할 수 없는 상황이다.
Technical Solution
- requests와 BeautifulSoup4를 사용해 Bandcamp의 서버 렌더링 HTML을 파싱하고 embedded JSON-LD 데이터 추출
- BandcampScraper 클래스 구현: User-Agent 헤더 설정, 선택적 프록시 지원, Session 객체로 연결 재사용
- get_artist_info() 메서드로 밴드명, 위치, 바이오, 이미지를 JSON-LD와 CSS 선택자로 추출
- get_discography() 메서드로 .music-grid-item 선택자를 통해 모든 릴리스의 제목, URL, 앨범 아트 파싱
- get_album_details() 메서드로 가격, "name your price" 플래그, 트랙 제목과 시간을 추출
- explore_tag() 메서드로 장르 태그 기반 트렌딩 릴리스 검색 구현 (정렬: pop, date 등)
- 대규모 수집 시 ThorData 레지던셜 프록시로 IP 로테이션해 레이트 제한 회피, 요청 사이 2초 이상 딜레이 적용
Key Takeaway
Public API 없는 플랫폼에서 서버 렌더링 HTML과 embedded JSON-LD 구조를 활용하면 별도 도구 없이 Python 표준 라이브러리로 구조화된 데이터를 추출할 수 있으며, 대규모 수집 시에는 레지던셜 프록시와 요청 딜레이의 조합으로 안정적인 스크래핑을 유지할 수 있다.
실천 포인트
음악 산업 분석이나 시장 조사가 필요한 팀에서 BeautifulSoup으로 Bandcamp의 공개 HTML을 파싱하고 2초 이상의 요청 간격을 두면 수천 개 아티스트의 프로필, 디스코그래피, 가격 데이터를 수집해 레이블 스카우팅, 장르 트렌드 분석, 시장 규모 추정을 수행할 수 있다.