본문 바로가기
PROGRAMMING/Python

멜론 차트 크롤링 코드(Crawling Melon Chart)

by BLADEBONE 2020. 12. 13.

## 사용한 라이브러리

- Selenium, BeautifulSoup, Pandas, datetime

- Webdriver for Chrome

 

## Melon Chart page 

www.melon.com/chart/index.htm

< Melon Chart Page Information >

- 멜론 차트 페이지의 경우 100곡에 대한 정보로 구성

 

## Crawling 및 데이터 저장

- 노래 제목은 div.ellipsis.rank01에서 찾을 수 있음

- 노래 제목 앞뒤로 '\n'가 붙어 있으므로, text 정보 추출 시 해당 개행문자 삭제 필요(strip사용)

- 가수 이름은 div.ellipsis.rank02에서 찾을 수 있는데 추가로 span.checkEllipsis에 반복해서 나오고 있음

- 가수 이름을 찾기 위해 최종적으로 div.ellipsis.rank02 > span.checkEllipsis 로 탐색

- 추출된 데이터는 Pandas의 DataFrame 변수에 저장(rank, title, singer 순으로 열지정)

- 엑셀 파일로 저장

 

## 결과

< Crawling Result >

 

# Import packages
from selenium import webdriver
from bs4 import BeautifulSoup
import pandas as pd
from datetime import datetime

# Get HTML using Webdriver with BeautifulSoup
driver = webdriver.Chrome('C:/Temp/chromedriver.exe')
url = 'https://www.melon.com/chart/index.htm'
driver.get(url)
html = driver.page_source
soup = BeautifulSoup(html, 'html.parser')

# Get songs top 100 within 24hour
songs = soup.select('div.ellipsis.rank01')
singers = soup.select('div.ellipsis.rank02 > span.checkEllipsis')

# Make a DataFrame
list_song = [song.text.strip('\n') for song in songs]
list_singer = [singer.text for singer in singers]
data = pd.DataFrame(data=zip(range(1,101),list_song, list_singer), columns=['Rank', 'Title', 'Singer'])
print(data.head())

# Close webdriver
driver.close()
driver.quit()

# Save a DataFrame to a Excel File(.xlsx)
now = datetime.now()
filename = now.strftime('Melon_Top100_at_%Y%m%d_%Hh%Mm.xlsx')
data.to_excel(filename, index=False)

 

## Sample Code Download

- Python code

crawling_melon100.py
0.00MB

- Jupyter Notebook

crawling_melon.ipynb
0.01MB

 

 

 

반응형

댓글