본문 바로가기
ETL

#1. [Mini Project] 멜론 TOP100 + DB (ETL _ bs4 & Selenium)

by KwonSoonBin 2023. 1. 16.

초기 계획) 

 

E : Beautifulsoup 사용하여 멜론 차트 100 정보를 가져오고, 원하는 형태로 정제 후 mysql DB에 저장

T : 전처리 및 원하는 형태로 변환

L : Msql DB에 저장 

 

 

1. bs4를 사용하여 원하는 정보를 가져오자

필요한 것 

해당 홈페이지 URL : https://www.melon.com/chart/index.htm

필요한 정보 : 가수, 노래 제목, 앨범, 좋아요 수

https://www.melon.com/chart/index.htm

from bs4 import BeautifulSoup
import requests

headers = {
    "User-Agent": "***"
}

r = requests.get("https://www.melon.com/chart/index.htm", headers=headers)
html = r.text
soup = BeautifulSoup(html, "html.parser")
list100 = soup.select(".lst50") + soup.select(".lst100")

for rank, list in enumerate(list100, 1):
    print("순위 : ", rank)
    print(list.select(".button_etc.like"))

※좋아요 수 데이터가 제대로 가져와지지 않는다.  -

 

태그를 다르게 해서 시도해 보아도 달라지지 않는다. (시도 과정을 다 올리지는 않았지만 진짜 별짓을 다 해 보아도 좋아요 수가 가져와지지 않았다.ㅠㅠ)

 

 

대체 왜? 

새로고침을 해 보니 좋아요 수는 실시간으로 가져오는 것 같다. 좋아요 수는 정적 페이지이와 관련있지 않을까?

 

 

------

 

Selenium은 좋아요 수를 가져올 수 있을까?

from selenium import webdriver
import time

url = "https://www.melon.com/chart/index.htm"

driver = webdriver.Chrome()
driver.get(url)

time.sleep(2)

html = driver.page_source
print(html)

와씨  다행히 가져와진다.

selenium 결과

 

 

 

 

 

'ETL' 카테고리의 다른 글

#2. [Mini Project] 멜론 TOP100 + DB (ETL _ bs4 & Selenium)  (0) 2023.01.16

댓글