본문 바로가기

TIL(today i learned)

[project] 지니음악 실시간 인기 차트 스크래핑

스파르타 코딩클럽 웹 종합반 3주차 과제로 python bs4 라이브러리를 사용하여 지니음악의 실시간 인기 차트를 스크래핑 하였다. 또, 몽고 db와 robo 3T를 이용하여 긁어온 정보를 db로 쌓아주었다.

 

requests를 활용하여 사이트에 정보를 달라는 요청을 보내고, beautifulSoup을 활용하여 받아온 정보를 sorting 했다.

이후 pymongo를 활용하여 몽고db에 긁어온 실시간 차트 정보를 저장하였다.

아래는 사용한 코드!

 

import requests
from bs4 import BeautifulSoup
from pymongo import MongoClient
client = MongoClient('localhost', 27017)
db = client.dbsparta


headers = {'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36'}
data = requests.get('https://www.genie.co.kr/chart/top200',headers=headers)

soup = BeautifulSoup(data.text, 'html.parser')

trs = soup.select('#body-content > div.newest-list > div > table > tbody > tr')
for tr in trs:
    rank_txt = tr.select_one('td.number').text
    rank = rank_txt.split()[0]
    title_txt = tr.select_one('td.info > a.title.ellipsis').text.strip()
    if "19금" in title_txt:
        title = title_txt.split()[1]
    else:
        title = title_txt
    singer = tr.select_one('td.info > a.artist.ellipsis').text

    doc = {
            'rank': rank,
            'title' : title,
            'singer' : singer
        }
    db.music_chart.insert_one(doc)