## 사용한 라이브러리
- Selenium, BeautifulSoup, Pandas, datetime
## Melon Chart page
- 멜론 차트 페이지의 경우 100곡에 대한 정보로 구성
## Crawling 및 데이터 저장
- 노래 제목은 div.ellipsis.rank01에서 찾을 수 있음
- 노래 제목 앞뒤로 '\n'가 붙어 있으므로, text 정보 추출 시 해당 개행문자 삭제 필요(strip사용)
- 가수 이름은 div.ellipsis.rank02에서 찾을 수 있는데 추가로 span.checkEllipsis에 반복해서 나오고 있음
- 가수 이름을 찾기 위해 최종적으로 div.ellipsis.rank02 > span.checkEllipsis 로 탐색
- 추출된 데이터는 Pandas의 DataFrame 변수에 저장(rank, title, singer 순으로 열지정)
- 엑셀 파일로 저장
## 결과
# 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
- Jupyter Notebook
반응형
'PROGRAMMING > Python' 카테고리의 다른 글
파이썬(Python) 및 파이토치(PyTorch) 버전 업그레이드 하기 (0) | 2020.11.24 |
---|---|
파이썬 패키지 업데이트 (0) | 2020.10.03 |
무거운 Anaconda 대신 miniconda (0) | 2018.12.26 |
Jupyter Notebook 시작 디렉토리 설정 (2) | 2018.09.14 |
PyCharm에서 OpenCV 자동완성 문제 해결 (2) | 2017.09.25 |
댓글