BeautifulSoup 예제2 음원사이트 Genie 차트 순위 긁어오기

2018. 1. 24. 18:59Python/Programming




먼저 Genie 사이트에 들어가서 각 차트 별 노래들을 어떻게 뽑아내야 할 지 보겠습니다



tbody 태그안에 tr태그마다 차트 1순위부터 50위 까지 있음을 확인할 수 있었습니다

tr태그이면서 class명이 list 인 태그를 검색하여 해당 내용을 긁어오겠습니다


[ Python Code ]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
import urllib.request
from bs4 import BeautifulSoup
 
# 1 ~ 50위
 
url = "https://genie.co.kr/chart/top100"
req = urllib.request.Request(url)
sourcecode = urllib.request.urlopen(req).read()
soup = BeautifulSoup(sourcecode,'html.parser')
 
index = 1
chart = soup.find_all("tr",class_="list")                 
# selector : body-content > div.newest-list > div > table > tbody > tr.list.rank-1
 
for rank in chart:
              print("###### %d위 #####" % (index) )
              song = rank.find("a",class_="title").get_text()[2:]     #song = song.replace("",'')
              print("곡 명 : %s" % (song))
              print("가수명 : %s" % (rank.find("a",class_="artist").get_text()) )
              index += 1
 
# 51 ~ 100위
 
url = "https://genie.co.kr/chart/top100?ditc=D&ymd=20180124&hh=17&rtm=Y&pg=2"
req = urllib.request.Request(url)
sourcecode = urllib.request.urlopen(req).read()
soup = BeautifulSoup(sourcecode,'html.parser')
 
chart = soup.find_all("tr",class_="list")                 
# selector : body-content > div.newest-list > div > table > tbody > tr.list.rank-1
 
for rank in chart:
              print("###### %d위 #####" % (index) )
              song = rank.find("a",class_="title").get_text()[2:]   
# 노래 이름에 ♪가 포함되어 있어서 [] 을 사용해서 한글만 출력
              print("곡 명 : %s" % (song))
              print("가수명 : %s" % (rank.find("a",class_="artist").get_text()) )
              index += 1
 
 
cs


[ 실행 결과 ]