본문 바로가기
코딩 연습/코딩배우기

[python] 파이썬 웹 크롤링(Web Crawling) 알아보기 #5

by good4me 2020. 10. 21.

goodthings4me.tistory.com

 

■ 파이썬으로 멜론차트 24Hits 리스트 추출하기

멜론차트에서 24Hits의 노래 목록(리스트)별 가수, 앨범과 곡 정보를 추출하는 파이썬 크롤링 코드
24Hits의 URL은 https://www.melon.com/chart/index.htm 이고,
곡 정보의 URL은 https://www.melon.com/song/detail.htm?songId=32978341
import requests
from bs4 import BeautifulSoup
import re

top100_url = 'https://www.melon.com/chart/index.htm'

headers = {
    'Referer': 'https://www.melon.com/index.htm',
    'User-Agent': ('Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 \
                   (KHTML, like Gecko) Chrome/86.0.4240.75 Safari/537.36')
}

html = requests.get(top100_url, headers = headers)
print(html)
soup = BeautifulSoup(html.text, 'html.parser')

hits_dict = {}  # 추출데이터를 담을 dict

for tag in soup.select('#tb_list tr'):
    try:
        playsong = tag.select_one('.rank01 a[href*=playSong]')
        title = playsong.text
        js = playsong['href']
        
        artist_detail = tag.select_one('.rank02 .checkEllipsis a')
        artist = artist_detail.text
        
        album_detail = tag.select_one('.rank03 a')
        album = album_detail.text        

        title_artist = title + '$' + artist+ '$' + album
        #print(title, js, artist, album)   
        
    except:
        continue

    # JavaScript 부분에서 songIds 추출 (정규표현식 사용)
    # 숫자 부분을 ()로 묶어 그룹화, ')'기호는 이스케이프 처리
    
    matched = re.search(r",(\d+)\);", js)
    if matched:
        song_id = matched.group(1)
        song_url = 'https://www.melon.com/song/detail.htm?songId=' + song_id

    hits_dict[song_url] = title_artist



# 추출데이터 출력해보기

for k, v in hits_dict.items():
    title, artist, album = v.split('$')
    print('가수: [{}]\n앨범: [{}]\n곡명: [{}]\n<{}>\n'.format(artist, album, title, k))

good4me.co.kr

 

[출력 결과]

가수: [환불원정대]
앨범: [DON'T TOUCH ME]
곡명: [DON'T TOUCH ME]
<https://www.melon.com/song/detail.htm?songId=32978341>

가수: [방탄소년단]
앨범: [Dynamite (DayTime Version)]
곡명: [Dynamite]
<https://www.melon.com/song/detail.htm?songId=32872978>

가수: [BLACKPINK]
앨범: [THE ALBUM]
곡명: [Lovesick Girls]
<https://www.melon.com/song/detail.htm?songId=32961718>

가수: [산들]
앨범: [취기를 빌려 (취향저격 그녀 X 산들)]
곡명: [취기를 빌려 (취향저격 그녀 X 산들)]
<https://www.melon.com/song/detail.htm?songId=32794652>

가수: [Crush]
앨범: [with HER]
곡명: [놓아줘 (with 태연)]
<https://www.melon.com/song/detail.htm?songId=32999763>

가수: [박진영]
앨범: [When We Disco]
곡명: [When We Disco (Duet with 선미)]
<https://www.melon.com/song/detail.htm?songId=32853712>

가수: [스탠딩 에그]
앨범: [오래된 노래]
곡명: [오래된 노래]
<https://www.melon.com/song/detail.htm?songId=3894276>

가수: [Jawsh 685]
앨범: [Savage Love (Laxed - Siren Beat) [BTS Remix]]
곡명: [Savage Love (Laxed - Siren Beat) (BTS Remix)]
<https://www.melon.com/song/detail.htm?songId=32962258>

가수: [임창정]
앨범: [힘든 건 사랑이 아니다]
곡명: [힘든 건 사랑이 아니다]
<https://www.melon.com/song/detail.htm?songId=32998018>

가수: [제시 (Jessi)]
앨범: [NUNA]
곡명: [눈누난나 (NUNU NANA)]
<https://www.melon.com/song/detail.htm?songId=32825454>

가수: [규현 (KYUHYUN)]
앨범: [내 마음이 움찔했던 순간 (취향저격 그녀 X 규현)]
곡명: [내 마음이 움찔했던 순간 (취향저격 그녀 X 규현)]
<https://www.melon.com/song/detail.htm?songId=32871975>

가수: [화사 (Hwa Sa)]
앨범: [María]
곡명: [마리아 (Maria)]
<https://www.melon.com/song/detail.htm?songId=32725013>

가수: [BLACKPINK]
앨범: [How You Like That]
곡명: [How You Like That]
<https://www.melon.com/song/detail.htm?songId=32720013>

가수: [아이유]
앨범: [에잇]
곡명: [에잇(Prod.&Feat. SUGA of BTS)]
<https://www.melon.com/song/detail.htm?songId=32578498>

가수: [오마이걸 (OH MY GIRL)]
앨범: [NONSTOP]
곡명: [Dolphin]
<https://www.melon.com/song/detail.htm?songId=32559782>

가수: [싹쓰리 (유두래곤, 린다G, 비룡)]
앨범: [다시 여기 바닷가]
곡명: [다시 여기 바닷가]
<https://www.melon.com/song/detail.htm?songId=32790516>

가수: [조정석]
앨범: [슬기로운 의사생활 OST Part 3]
곡명: [아로하]
<https://www.melon.com/song/detail.htm?songId=32491274>

가수: [마마무 (Mamamoo)]
앨범: [딩가딩가 (Dingga)]
곡명: [딩가딩가 (Dingga)]
<https://www.melon.com/song/detail.htm?songId=33001672>

가수: [블루 (BLOO)]
앨범: [Downtown Baby]
곡명: [Downtown Baby]
<https://www.melon.com/song/detail.htm?songId=30773554>

가수: [이하이]
앨범: [홀로]
곡명: [홀로]
<https://www.melon.com/song/detail.htm?songId=32808616>

가수: [오반]
앨범: [어떻게 지내]
곡명: [어떻게 지내 (Prod. By VAN.C)]
<https://www.melon.com/song/detail.htm?songId=32438894>

가수: [Tones And I]
앨범: [The Kids Are Coming]
곡명: [Dance Monkey]
<https://www.melon.com/song/detail.htm?songId=31979846>

가수: [노을]
앨범: [늦은 밤 너의 집 앞 골목길에서]
곡명: [늦은 밤 너의 집 앞 골목길에서]
<https://www.melon.com/song/detail.htm?songId=32156286>

가수: [아이유]
앨범: [Love poem]
곡명: [Blueming]
<https://www.melon.com/song/detail.htm?songId=32183386>

가수: [Maroon 5]
앨범: [Memories]
곡명: [Memories]
<https://www.melon.com/song/detail.htm?songId=32055419>

가수: [AKMU (악동뮤지션)]
앨범: [항해]
곡명: [어떻게 이별까지 사랑하겠어, 널 사랑하는 거지]
<https://www.melon.com/song/detail.htm?songId=32061975>

가수: [창모 (CHANGMO)]
앨범: [Boyhood]
곡명: [METEOR]
<https://www.melon.com/song/detail.htm?songId=32224272>

가수: [방탄소년단]
앨범: [MAP OF THE SOUL : PERSONA]
곡명: [작은 것들을 위한 시 (Boy With Luv) (Feat. Halsey)]
<https://www.melon.com/song/detail.htm?songId=31737197>

가수: [전상근]
앨범: [한 걸음 : 흔적]
곡명: [사랑은 지날수록 더욱 선명하게 남아]
<https://www.melon.com/song/detail.htm?songId=32651098>

가수: [오마이걸 (OH MY GIRL)]
앨범: [NONSTOP]
곡명: [살짝 설렜어 (Nonstop)]
<https://www.melon.com/song/detail.htm?songId=32559781>

가수: [장범준]
앨범: [멜로가 체질 OST Part 3]
곡명: [흔들리는 꽃들 속에서 네 샴푸향이 느껴진거야]
<https://www.melon.com/song/detail.htm?songId=32003395>

가수: [백지영]
앨범: [거짓말이라도 해서 널 보고싶어]
곡명: [거짓말이라도 해서 널 보고싶어]
<https://www.melon.com/song/detail.htm?songId=32777869>

가수: [폴킴]
앨범: [`키스 먼저 할까요?` OST Part.3]
곡명: [모든 날, 모든 순간 (Every day, Every Moment)]
<https://www.melon.com/song/detail.htm?songId=30962526>

가수: [Crush]
앨범: [with HER]
곡명: [Tip Toe (with 이하이)]
<https://www.melon.com/song/detail.htm?songId=32999764>

가수: [전미도]
앨범: [슬기로운 의사생활 OST Part 11]
곡명: [사랑하게 될 줄 알았어]
<https://www.melon.com/song/detail.htm?songId=32614125>

가수: [마크툽 (MAKTUB)]
앨범: [Red Moon : To You My Light]
곡명: [오늘도 빛나는 너에게 (To You My Light) (Feat.이라온)]
<https://www.melon.com/song/detail.htm?songId=31853557>

가수: [(여자)아이들]
앨범: [덤디덤디 (DUMDi DUMDi)]
곡명: [덤디덤디 (DUMDi DUMDi)]
<https://www.melon.com/song/detail.htm?songId=32833393>

가수: [Anne-Marie]
앨범: [Speak Your Mind (Deluxe)]
곡명: [2002]
<https://www.melon.com/song/detail.htm?songId=31029291>

가수: [BLACKPINK]
앨범: [Ice Cream (with Selena Gomez)]
곡명: [Ice Cream (with Selena Gomez)]
<https://www.melon.com/song/detail.htm?songId=32889003>

가수: [신예영]
앨범: [우리 왜 헤어져야 해]
곡명: [우리 왜 헤어져야 해]
<https://www.melon.com/song/detail.htm?songId=32187544>

가수: [지코 (ZICO)]
앨범: [RANDOM BOX]
곡명: [Summer Hate (Feat. 비)]
<https://www.melon.com/song/detail.htm?songId=32734372>

가수: [청하]
앨범: [Bad Boy]
곡명: [Bad Boy]
<https://www.melon.com/song/detail.htm?songId=32947184>

가수: [Dua Lipa]
앨범: [Future Nostalgia]
곡명: [Don't Start Now]
<https://www.melon.com/song/detail.htm?songId=32137576>

가수: [ITZY (있지)]
앨범: [Not Shy]
곡명: [Not Shy]
<https://www.melon.com/song/detail.htm?songId=32860419>

가수: [로꼬]
앨범: [SOME TIME]
곡명: [잠이 들어야 (Feat. 헤이즈)]
<https://www.melon.com/song/detail.htm?songId=32987478>

가수: [순순희]
앨범: [서면역에서]
곡명: [서면역에서]
<https://www.melon.com/song/detail.htm?songId=32570501>

가수: [아이유]
앨범: [사랑의 불시착 OST Part 11]
곡명: [마음을 드려요]
<https://www.melon.com/song/detail.htm?songId=32378104>

가수: [엠씨더맥스 (M.C the MAX)]
앨범: [CEREMONIA]
곡명: [처음처럼]
<https://www.melon.com/song/detail.htm?songId=32486613>

가수: [방탄소년단]
앨범: [YOU NEVER WALK ALONE]
곡명: [봄날]
<https://www.melon.com/song/detail.htm?songId=30244931>

가수: [폴킴]
앨범: [호텔 델루나 OST Part.10]
곡명: [안녕]
<https://www.melon.com/song/detail.htm?songId=31984204>

가수: [선미]
앨범: [보라빛 밤 (pporappippam)]
곡명: [보라빛 밤 (pporappippam)]
<https://www.melon.com/song/detail.htm?songId=32725022>

가수: [지코 (ZICO)]
앨범: [아무노래]
곡명: [아무노래]
<https://www.melon.com/song/detail.htm?songId=32313543>

가수: [방탄소년단]
앨범: [MAP OF THE SOUL : 7]
곡명: [ON]
<https://www.melon.com/song/detail.htm?songId=32399830>

가수: [바이브]
앨범: [가을 타나 봐]
곡명: [가을 타나 봐]
<https://www.melon.com/song/detail.htm?songId=31314144>

가수: [Etham]
앨범: [12:45 (Stripped)]
곡명: [12:45 (Stripped)]
<https://www.melon.com/song/detail.htm?songId=31509376>

가수: [BLACKPINK]
앨범: [THE ALBUM]
곡명: [Pretty Savage]
<https://www.melon.com/song/detail.htm?songId=32961716>

가수: [가호 (Gaho)]
앨범: [이태원 클라쓰 OST Part.2]
곡명: [시작]
<https://www.melon.com/song/detail.htm?songId=32345931>

가수: [Conan Gray]
앨범: [Maniac]
곡명: [Maniac]
<https://www.melon.com/song/detail.htm?songId=32122539>

가수: [Crush]
앨범: [with HER]
곡명: [Step By Step (with 윤미래)]
<https://www.melon.com/song/detail.htm?songId=32999766>

가수: [아이유]
앨범: [Love poem]
곡명: [Love poem]
<https://www.melon.com/song/detail.htm?songId=32143487>

가수: [임영웅]
앨범: [내일은 미스터트롯 우승자 특전곡]
곡명: [이제 나만 믿어요]
<https://www.melon.com/song/detail.htm?songId=32508053>

가수: [조이 (JOY)]
앨범: [슬기로운 의사생활 OST Part 2]
곡명: [좋은 사람 있으면 소개시켜줘]
<https://www.melon.com/song/detail.htm?songId=32473998>

가수: [아이유]
앨범: [I-LAND Part.1 Signal Song]
곡명: [Into the I-LAND]
<https://www.melon.com/song/detail.htm?songId=32698765>

가수: [오반]
앨범: [축하해]
곡명: [축하해]
<https://www.melon.com/song/detail.htm?songId=32915886>

가수: [Crush]
앨범: [with HER]
곡명: [춤 (with 이소라)]
<https://www.melon.com/song/detail.htm?songId=32999765>

가수: [Red Velvet (레드벨벳)]
앨범: [‘The ReVe Festival’ Finale]
곡명: [Psycho]
<https://www.melon.com/song/detail.htm?songId=32273582>

가수: [카더가든]
앨범: [밤새 (취향저격 그녀 X 카더가든)]
곡명: [밤새 (취향저격 그녀 X 카더가든)]
<https://www.melon.com/song/detail.htm?songId=32902881>

가수: [Lauv]
앨범: [I met you when I was 18. (the playlist)]
곡명: [Paris In The Rain]
<https://www.melon.com/song/detail.htm?songId=31341518>

가수: [싹쓰리 (유두래곤, 린다G, 비룡)]
앨범: [그 여름을 틀어줘]
곡명: [그 여름을 틀어줘]
<https://www.melon.com/song/detail.htm?songId=32814383>

가수: [Crush]
앨범: [with HER]
곡명: [She Said (with BIBI)]
<https://www.melon.com/song/detail.htm?songId=32999767>

가수: [BLACKPINK]
앨범: [THE ALBUM]
곡명: [Bet You Wanna (Feat. Cardi B)]
<https://www.melon.com/song/detail.htm?songId=32961717>

가수: [황인욱]
앨범: [취했나봐]
곡명: [취했나봐]
<https://www.melon.com/song/detail.htm?songId=32616054>

가수: [폴킴]
앨범: [너를 만나]
곡명: [너를 만나]
<https://www.melon.com/song/detail.htm?songId=31388145>

가수: [김필]
앨범: [이태원 클라쓰 OST Part.6]
곡명: [그때 그 아인]
<https://www.melon.com/song/detail.htm?songId=32377231>

가수: [이수현]
앨범: [ALIEN]
곡명: [ALIEN]
<https://www.melon.com/song/detail.htm?songId=32995890>

가수: [마크툽 (MAKTUB)]
앨범: [Red Moon : Ode To The Stars]
곡명: [별을 담은 시 (Ode To The Stars)]
<https://www.melon.com/song/detail.htm?songId=32906021>

가수: [Billie Eilish]
앨범: [WHEN WE ALL FALL ASLEEP, WHERE DO WE GO?]
곡명: [bad guy]
<https://www.melon.com/song/detail.htm?songId=31701428>

가수: [김준수]
앨범: [사랑하고 싶지 않아 (바른연애 길잡이 X XIA (준수))]
곡명: [사랑하고 싶지 않아 (바른연애 길잡이 X XIA (준수))]
<https://www.melon.com/song/detail.htm?songId=32996308>

가수: [볼빨간사춘기]
앨범: [사춘기집Ⅱ 꽃 본 나비]
곡명: [나비와 고양이 (feat.백현 (BAEKHYUN))]
<https://www.melon.com/song/detail.htm?songId=32583036>

가수: [Ruel]
앨범: [Painkiller]
곡명: [Painkiller]
<https://www.melon.com/song/detail.htm?songId=31768993>

가수: [규현 (KYUHYUN)]
앨범: [슬기로운 의사생활 OST Part 4]
곡명: [화려하지 않은 고백]
<https://www.melon.com/song/detail.htm?songId=32508146>

가수: [비룡]
앨범: [두리쥬와 X LINDA X 신난다]
곡명: [신난다 (Feat. 마마무)]
<https://www.melon.com/song/detail.htm?songId=32830279>

가수: [HYNN (박혜원)]
앨범: [시든 꽃에 물을 주듯]
곡명: [시든 꽃에 물을 주듯]
<https://www.melon.com/song/detail.htm?songId=31703498>

가수: [Ariana Grande]
앨범: [Stuck with U]
곡명: [Stuck with U]
<https://www.melon.com/song/detail.htm?songId=32584913>

가수: [백현 (BAEKHYUN)]
앨범: [낭만닥터 김사부 2 OST Part.1]
곡명: [너를 사랑하고 있어]
<https://www.melon.com/song/detail.htm?songId=32298623>

가수: [진민호]
앨범: [반만]
곡명: [반만]
<https://www.melon.com/song/detail.htm?songId=32224409>

가수: [헤이즈 (Heize)]
앨범: [밤하늘의 저 별처럼 (브람스를 좋아하세요? OST 스페셜 트랙)]
곡명: [밤하늘의 저 별처럼]
<https://www.melon.com/song/detail.htm?songId=32955381>

가수: [임창정]
앨범: [하루도 그대를 사랑하지 않은 적이 없었다]
곡명: [하루도 그대를 사랑하지 않은 적이 없었다]
<https://www.melon.com/song/detail.htm?songId=31316695>

가수: [전상근]
앨범: [사랑이란 멜로는 없어]
곡명: [사랑이란 멜로는 없어]
<https://www.melon.com/song/detail.htm?songId=32034629>

가수: [신용재 (2F)]
앨범: [Dear]
곡명: [첫 줄]
<https://www.melon.com/song/detail.htm?songId=32734819>

가수: [송하예]
앨범: [Happy]
곡명: [행복해]
<https://www.melon.com/song/detail.htm?songId=32996210>

가수: [방탄소년단]
앨범: [MAP OF THE SOUL : 7]
곡명: [00:00 (Zero O’Clock)]
<https://www.melon.com/song/detail.htm?songId=32399832>

가수: [정은지]
앨범: [너의 밤은 어때 (취향저격 그녀 X 정은지)]
곡명: [너의 밤은 어때 (취향저격 그녀 X 정은지)]
<https://www.melon.com/song/detail.htm?songId=32955371>

가수: [TWICE (트와이스)]
앨범: [MORE & MORE]
곡명: [MORE & MORE]
<https://www.melon.com/song/detail.htm?songId=32636656>

가수: [마마무 (Mamamoo)]
앨범: [reality in BLACK]
곡명: [HIP]
<https://www.melon.com/song/detail.htm?songId=32175937>

가수: [싹쓰리 (유두래곤, 린다G, 비룡)]
앨범: [여름 안에서 by 싹쓰리]
곡명: [여름 안에서 by 싹쓰리 (Feat. 황광희)]
<https://www.melon.com/song/detail.htm?songId=32768945>

가수: [유아 (오마이걸)]
앨범: [Bon Voyage]
곡명: [숲의 아이 (Bon voyage)]
<https://www.melon.com/song/detail.htm?songId=32907450>

가수: [Sam Smith]
앨범: [To Die For]
곡명: [To Die For]
<https://www.melon.com/song/detail.htm?songId=32373713>

가수: [청하]
앨범: [PLAY]
곡명: [PLAY (Feat. 창모)]
<https://www.melon.com/song/detail.htm?songId=32749031>

가수: [세븐틴]
앨범: [SEVENTEEN Special Album '; [Semicolon]']
곡명: [HOME;RUN]
<https://www.melon.com/song/detail.htm?songId=32996474>

 

[참고] askcompany.kr - 크롤링 차근차근 시작하기

 

댓글