티스토리 뷰
python :: 멜로차트 실시간 가져오기 크롤링 :: selenium, csv, BeautifulSoup
모든 강의 자료 : www.codingnow.co.kr/
1. 실행 영상
2. 설명
멜론사이트(melon.com)에서 제공되는 음원 순위를 csv파일로 저장하는 내용입니다.
파이썬을 실행하면 다음과 같이 CSV파일로 저장이 됩니다.
3. 소스코드
from selenium import webdriver
from bs4 import BeautifulSoup
import time
import csv
print('-------------------------------------')
print('제작자 : https://blog.naver.com/cflab')
print('-------------------------------------')
def openDriver():
url = 'https://www.melon.com/chart/index.htm'
driver = webdriver.Chrome()
driver.implicitly_wait(3)
driver.get(url)
time.sleep(1)
return driver
def searchMelon(driver):
html = driver.page_source
soup = BeautifulSoup(html, 'html.parser')
tags = soup.find_all(class_='wrap_song_info')
mList = []
rank = 1
for i in tags:
try:
title = i.find(class_='ellipsis rank01').a.text
singer = i.find(class_='ellipsis rank02').a.text
print(f'순위 : {rank}\n가수 : {singer} \n제목 : {title}\n')
mList.append([rank, singer, title])
rank += 1
except:
pass
return mList
def saveToFile(filename, mList):
with open(filename, 'w', encoding='utf-8-sig', newline='') as f:
writer = csv.writer(f)
writer.writerows(mList)
driver = openDriver()
mList = searchMelon(driver)
saveToFile('melon.csv', mList)
4. 소스 설명
여기서 사용될 메소드를 다음과 같이 추가합니다.
from selenium import webdriver
from bs4 import BeautifulSoup
import time
import csv
함수 형태로 구현이 되었으며, 아래와 같이 각 함수에 인자를 넣고 받아서 실행을 합니다.
driver = openDriver()
mList = searchMelon(driver)
saveToFile('melon.csv', mList)
각 함수에 대해 살펴 보겠습니다.
1) openDriver( ) 함수는 selenium의 webdriver를 사용할 수 있습니다.
def openDriver():
url = 'https://www.melon.com/chart/index.htm'
driver = webdriver.Chrome()
driver.implicitly_wait(3)
driver.get(url)
time.sleep(1)
return driver
먼저 크롬 드라이버를 소스가 있는 동일 폴더에 넣어주면
"driver = webdriver.Chrome()" 이와 같이 한줄로 끝이 납니다.
크롬의 web driver는 "https://cflab.blog.me/222130893298" 여기를 참고 하세요.
get(url) 메소드를 통해 웹페이지를 실행시키게 됩니다.
2) searchMelon(driver) 함수는 멜론 웹페이지의 html을 가져와서 분석하여 원하는 정보를 추려냅니다.
html = driver.page_source
soup = BeautifulSoup(html, 'html.parser')
크롬의 개발자도구(F12)를 실행하여 "가수", "노래제목"을 포함하고 있는 class를 찾아 냅니다.
여기서는 100개의 음원정보를 'wrap_song_info' class가 가지고 있습니다.
(개발자도구에서 찾는 것은 cflab.blog.me/222146491069 여기를 참고하세요.)
tags = soup.find_all(class_='wrap_song_info')
이후에 가수 명과 노래 제목이 있는 class를 찾아 냅니다. 그리고 이것을 title, singer로 저장을 합니다.
title = i.find(class_='ellipsis rank01').a.text
singer = i.find(class_='ellipsis rank02').a.text
그리고 CSV에 저장 할 수 있도록 list에 넣어 줍니다.
mList.append([rank, singer, title])
3) saveToFile(filename, mList) 함수는 list를 받아서 csv파일에 저장하는 기능을 합니다.
한글 저장이 가능하도록 encoding='utf-8-sig' 형태로 파일을 생성합니다.
with open(filename, 'w', encoding='utf-8-sig', newline='') as f:
그리고 csv.writer를 생성하고
writer = csv.writer(f)
전달받은 list를 csv에 저장합니다.
writer.writerows(mList)
'파이썬 강의' 카테고리의 다른 글
파이썬 기초 활용 편 #간단한 게임 만들기 #가위바위보 게임 (0) | 2021.01.13 |
---|---|
파이썬 기초 활용편 : : 학생의 총점, 최고, 최저, 평균 구하기 (0) | 2021.01.12 |
파이썬 기초 활용편 별 피라미드 출력하기 강의 :: 과정을 차근차근 설명합니다. (0) | 2021.01.12 |
파이썬 기초 :: 예외처리 와 쓰레드 :: try, except, thread (0) | 2021.01.11 |
파이썬 크롤링 :: 네어버 웹툰의 순위 가져오기 :: BeautifulSoup, selenium, csv (0) | 2020.11.18 |