โ ๏ธ Mac(๋งฅ๋ถ) m1์์ ์๋์ฝ๋ค๋ฅผ ์ฌ์ฉํ์ฌ ์ ์ํ์ต๋๋ค
์ ๋ชฉ์๋ ํ์ด์ฌ ํฌ๋กค๋ง์ด๋ผ ์์ฑํ์ง๋ง ์ ํํ ๋งํ์๋ฉด ์น ์คํฌ๋ํ ์ด๋ค.
์์ ์ฌ์ดํธ์์ TOP 100 ์ฐจํธ ๋ ธ๋ ์ ๋ชฉ๊ณผ ์ํฐ์คํธ ์ ๋ณด๋ฅผ ๊ธ์ด์ txt ํ์ผ ํ์์ผ๋ก ์ ์ฅํ๋ ์ฝ๋๋ค.
๋๋ถ๋ถ์ ์ฌ์ดํธ๋ค์ด ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์,
๋์ ์ธ ํ์ด์ง์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๊ธฐ ์ํด์ Selenium์ ์ฌ์ฉํด์ผํ๋ค. (์ ๋ ๋์์ pip ์ค์น ํ ์ฌ์ฉํด์ผ ํ๋ค!)
pip install selenium
๊ทธ๋ฆฌ๊ณ ํฌ๋กฌ ๋๋ผ์ด๋ฒ๋ฅผ ์ค์นํด์คฌ๋ค.
https://chromedriver.chromium.org/downloads
ChromeDriver - WebDriver for Chrome - Downloads
Current Releases If you are using Chrome version 100, please download ChromeDriver 100.0.4896.20 If you are using Chrome version 99, please download ChromeDriver 99.0.4844.51 If you are using Chrome version 98, please download ChromeDriver 98.0.4758.102 Fo
chromedriver.chromium.org
์ ์ฌ์ดํธ์์ ํฌ๋กฌ ๋ฒ์ ์ ๋ง๋ ๋๋ผ์ด๋ฒ๋ฅผ ๋ค์ด๋ฐ์ ์์ฑํ ์ฝ๋ ํ์ผ๊ณผ ๊ฐ์ ํด๋์ ๋ฃ์ด์คฌ๋ค.
์ฌ๊ธฐ์ ์ฃผ์ํ ์ ์, ์ฒ์ ํฌ๋กฌ ๋๋ผ์ด๋ฒ๋ฅผ ์ค์น ํ ์ฌ์ฉํ๊ฒ ๋๋ฉด ๋ค์๊ณผ ๊ฐ์ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ค.
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)
๋๊ธ