소소한 컴퓨터 이야기

[크롤링] 1. 음원 정보 수집하기

by Cori

국내 여러 음원 서비스(멜론, 지니, 벅스)에서 노래 순위를 수집하고, 통합

 

* 해당 포스팅에서 다루고 있는 모든 내용은 다음 서적을 참고하였습니다.

 

직장인을 위한 데이터 분석 실무 with 파이썬(개정판)(위키북스 데이터 사이언스 시리즈 63)

‘데이터 분석은 좋은 질문에서 시작합니다’이 책에서는 누구나 궁금했던 그 질문에 대해 데이터로 답해 봅니다. 이 책은 파이썬을 처음 접하는 마케팅, 영업, 기획 실무 담당자들이 파이썬을

book.naver.com


 

0. 기본 환경 설정

from selenium import webdriver
from bs4 import BeautifulSoup

driver = webdriver.Chrome('./chromedriver.exe')
url = 'http://www.melon.com/chart/index.htm'  # 이 주소를 변경하여 멜론, 지니, 벅스 음원 정보 수집 
driver.get(url)  

html = driver.page_source   # 접속한 웹 페이지의 HTML 다운로드 
soup = BeautifulSoup(html, 'html.parser')   # BeautifulSoup으로 읽음

chromedriver가 사이트에 접속한 것을 확인할 수 있음

 

1. 엑셀 파일에 저장할 데이터 설정, 위치 탐색 후 배열에 저장

song_data = []   # 나중에 엑셀 파일로 저장할 리스트 
rank = 1 

songs = soup.select('table > tbody > tr')
for song in songs:
    title = song.select('div.rank01 > span > a')[0].text 
    singer = song.select('div.rank02 > a')[0].text 
    song_data.append(['Melon', rank, title, singer])
    rank += 1

음원 사이트에서 '사이트 명, 음원순위, 음원제목, 가수 이름'을 수집한다. 해당 데이터를 탐색하는

구체적인 방법은 여기서 다루지 않을 생각이므로 궁금하신 분들은 구글링 부탁드립니다.

2. song_data 배열을 이용해, 데이터프레임 생성

import pandas as pd 

columns = ['site', 'rank', 'title', 'singer']
pd_data = pd.DataFrame(song_data, columns = columns)
pd_data.head()
pd_data.info()   # 잘 가져왔는지 정보 확인

수집한 데이터를 데이터프레임 형태로 변환

3. 크롤링 결과를 엑셀 파일로 저장

pd_data.to_excel('./melon.xlsx',index=False)

이렇게 한 음원 사이트의 실시간 음원 정보를 크롤링 하는 작업에 대해 살펴보았고, 다른 음원 사이트 데이터를 크롤링하는 작업도 위의 내용과 다르지 않아, 여기서는 생략 .. 전체 코드가 궁금하신 분들은 포스팅에 참고한 책 (직장인을 위한 데이터 분석 실무 with 파이썬) 저자분의 github를 참고 부탁드립니다.

 

* 크롤링을 추가로 하는 것이 귀찮은 분들은 댓글로 메일주소 남겨주시면 나머지 파일들도 보내드릴게요. 

 

4. 수집한 데이터 파일들을 병합

import pandas as pd 

excel_names = ['./melon.xlsx', './bugs.xlsx', 'genie.xlsx']
appended_data = pd.DataFrame()

for name in excel_names:
	pd_data = pd.read_excel(name)
    appended_data = appended_data.append(pd_data)
    
appended_data.info()

genie의 데이터가 50개여서, 총 250개의 데이터를 모았다.

5. 통합한 크롤링 결과를 엑셀 파일로 저장

appended_data.to_excel('./total.xlsx', index=False)

이렇게 음원 사이트의 음원 정보를 수집하고, 수집한 데이터들을 하나의 파일로 통합하는 과정에 대해 살펴보았다.

블로그의 정보

코딩하는 오리

Cori

활동하기