โ ๏ธ Mac(๋งฅ๋ถ) m1์์ ์๋์ฝ๋ค๋ฅผ ์ฌ์ฉํ์ฌ ์ ์ํ์ต๋๋ค
์ ๋ชฉ์๋ ํ์ด์ฌ ํฌ๋กค๋ง์ด๋ผ ์์ฑํ์ง๋ง ์ ํํ ๋งํ์๋ฉด ์น ์คํฌ๋ํ ์ด๋ค.
์์ ์ฌ์ดํธ์์ TOP 100 ์ฐจํธ ๋ ธ๋ ์ ๋ชฉ๊ณผ ์ํฐ์คํธ ์ ๋ณด๋ฅผ ๊ธ์ด์ txt ํ์ผ ํ์์ผ๋ก ์ ์ฅํ๋ ์ฝ๋๋ค.
๋๋ถ๋ถ์ ์ฌ์ดํธ๋ค์ด ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์,
๋์ ์ธ ํ์ด์ง์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๊ธฐ ์ํด์ Selenium์ ์ฌ์ฉํด์ผํ๋ค. (์ ๋ ๋์์ pip ์ค์น ํ ์ฌ์ฉํด์ผ ํ๋ค!)
pip install selenium
๊ทธ๋ฆฌ๊ณ ํฌ๋กฌ ๋๋ผ์ด๋ฒ๋ฅผ ์ค์นํด์คฌ๋ค.
https://chromedriver.chromium.org/downloads
์ ์ฌ์ดํธ์์ ํฌ๋กฌ ๋ฒ์ ์ ๋ง๋ ๋๋ผ์ด๋ฒ๋ฅผ ๋ค์ด๋ฐ์ ์์ฑํ ์ฝ๋ ํ์ผ๊ณผ ๊ฐ์ ํด๋์ ๋ฃ์ด์คฌ๋ค.
์ฌ๊ธฐ์ ์ฃผ์ํ ์ ์, ์ฒ์ ํฌ๋กฌ ๋๋ผ์ด๋ฒ๋ฅผ ์ค์น ํ ์ฌ์ฉํ๊ฒ ๋๋ฉด ๋ค์๊ณผ ๊ฐ์ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ค.
WebDriverException: Message: Service ./chromedriver unexpectedly exited. Status code was: -9
๊ทธ๋ฌ๋ฉด, ์์คํ ํ๊ฒฝ์ค์ > ๋ณด์ ๋ฐ ๊ฐ์ธ ์ ๋ณด ๋ณดํธ ์ ๋ค์ด๊ฐ ํด๊ฒฐํด์ฃผ๋ฉด ๋๋ค.
"ํ์ธ ์์ด ํ์ฉ" ์ ๋๋ฅด๊ณ ๋ค์ ์คํ์ํค๋ฉด,
์ด๋ฐ ๊ฒฝ๊ณ ์ฐฝ์ด ๋จ๊ณ ์ฌ๊ธฐ์ "์ด๊ธฐ"๋ฅผ ๋๋ฅด๋ฉด ์ ์์ ์ผ๋ก ์๋ํ๋ ๊ฒ์ ๋ณผ ์ ์๋ค.
์์ฑ ์ฝ๋
import requests
from bs4 import BeautifulSoup
from selenium import webdriver
from datetime import datetime
# ๋ฐ์ด๋ธ ์ฐจํธ ํ์ด์ง URL
url = "https://vibe.naver.com/chart/total"
# ์น ํ์ด์ง ์ด๊ธฐ
driver = webdriver.Chrome("./chromedriver")
driver.get(url)
driver.implicitly_wait(5)
# HTML ์์ค ๋ฐ๊ธฐ
html = driver.page_source
soup = BeautifulSoup(html,'html.parser')
# ๊ณก ์ ๋ชฉ ๊ฐ์ ธ์ค๊ธฐ
spans = soup.findAll('span','inner_cell')
titles = []
for span in spans:
title = span.select_one('span > a').get_text()
titles.append(title)
# ๊ฐ์ ๊ฐ์ ธ์ค๊ธฐ
divs = soup.findAll('div','artist_sub')
artists = []
for div in divs:
artist = div.select_one('div > span > span > a > span').get_text()
artists.append(artist)
# ๋ธ๋ผ์ฐ์ ๋ซ๊ธฐ
driver.quit()
# ํ์ผ ์ด๊ธฐ
vibe_file = open("VIBE_TOP100_List.txt","a")
# ํ์ผ ์์ฑ
head = datetime.today().strftime("%Y๋
%m์ %d์ผ์ VIBE ์ฐจํธ TOP 100 ์
๋๋ค"+"\n")
vibe_file.write(head)
print(head)
rank = 1
for i in range(100):
vibe_file.write(str(rank)+"์"+"\t"+titles[i]+" - "+artists[i]+"\n")
print(rank,"์","\t",titles[i]," - ",artists[i],"\n",sep='')
rank += 1
# ํ์ผ ๋ซ๊ธฐ
vibe_file.close()
์คํ ๊ฒฐ๊ณผ
VIBE ์์ ์ฐจํธ Top 100 ์ฌ์ดํธ ํ๋ฉด์ด๋ค.
Jupyter notebook์์ ์ฝ๋๋ฅผ ์คํํ๊ณ ๋๋ฉด ์ฑ๊ณต์ ์ผ๋ก ๋ถ๋ฌ์จ๋ค.
ํฌ๋กค๋ง ์ฝ๋๊ฐ ์๋ ํด๋์ ๋ค์ด๊ฐ๋ณด๋ฉด ์ฑ๊ณต์ ์ผ๋ก top 100 ์ฐจํธ๊ฐ ํ ์คํธ ํ์ผ๋ก ๋ง๋ค์ด์ง ๊ฒ ๋ํ ํ์ธํ ์ ์๋ค๐
( ์คํ ๊ฒฐ๊ณผ ํ๋ฉด ์บก์ณ๋ฅผ ์ํด๋จ์ด์ ๋ค์ ๋๋ ค์ ์ถ๊ฐํ๋ค - 22.03.18)
๋๊ธ