Last active
October 12, 2021 06:05
-
-
Save allieus/423625c7e846e1e7a81c to your computer and use it in GitHub Desktop.
멜론, 플레이리스트 목록 파서
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# coding: utf-8 | |
import re | |
import urllib | |
from bs4 import BeautifulSoup | |
class MelonSong(object): | |
ARTIST_REGEXP = re.compile(r'.*goArtistDetail.*') | |
ALBUM_REGEXP = re.compile(r'.*goAlbumDetail.*') | |
SONG_REGEXP = re.compile(r'.*playSong.*') | |
NUMBER_PARAM_REGEXP = re.compile(r'[\'\",(\s](\d+)[\'\",)]') | |
def __init__(self, bs4_tag): | |
artist_tag = bs4_tag.find('a', {'href': self.ARTIST_REGEXP}) | |
album_tag = bs4_tag.find('a', {'href': self.ALBUM_REGEXP}) | |
song_tag = bs4_tag.find('a', {'href': self.SONG_REGEXP}) | |
self.artist_id = self.get_number_param(artist_tag['href']) | |
self.artist_name = artist_tag.text | |
self.album_id = self.get_number_param(album_tag['href']) | |
self.album_name = album_tag.text | |
self.song_id = self.get_number_param(song_tag['href'], 1) | |
self.song_name = song_tag.text | |
def __unicode__(self): | |
return u'[{}] {}, [{}] {}, [{}] {}'.format( | |
self.artist_id, self.artist_name, self.album_id, self.album_name, | |
self.song_id, self.song_name) | |
def get_number_param(self, s, suppose_idx=0): | |
matched = re.findall(self.NUMBER_PARAM_REGEXP, s) | |
if matched: | |
return matched[suppose_idx] | |
return None | |
class MelonParser(object): | |
def __init__(self, html): | |
soup = BeautifulSoup(html) | |
for tr in soup.select('.d_song_list table tbody tr'): | |
print unicode(MelonSong(tr)) | |
if __name__ == '__main__': | |
url = 'http://www.melon.com/mymusic/playlist/mymusicplaylistview_listPagingSong.htm?startIndex=51&pageSize=50&plylstSeq=403750375' | |
html = urllib.urlopen(url).read() | |
MelonParser(html) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
[596671] 카페모카, [2289645] 다시 태어나도, [5452059] 다시 태어나도 | |
[495401] 포스트맨, [2289472] 눈물이 나, [5450338] 눈물이 나 | |
[713865] 다람, [2289550] 그래요, [5451362] 그래요 (Feat. 빌리어코스티) | |
[455161] 리디아, [2289587] 고양이는 있다 OST Part.11, [5451664] 난 안되는가요 | |
[418700] 홍진영, [2289464] 인생노트 (LIFE NOTE), [5450271] 산다는 건 (Cheer Up) | |
[570311] 엔소닉, [2289482] 내겐 너무 사랑스러운 그녀 OST, [5450474] 그리워요 | |
[168158] Still PM, [2289831] Doingood, [5454093] Doingood | |
[226789] 이동윤, [2289842] 시간이 흘러도, [5454274] 시간이 흘러도 | |
[586991] 후니용이, [2289960] 고양이는 있다 OST Part.12, [5455028] 매일그대와 (Twist Ver.) | |
[776963] 한나 (리멤버러스), [2289565] 전설의 마녀 OST Part.1, [5451487] 러브스토리 (Original Ver.) | |
[747392] 클라라, [2289637] Fear, [5452028] 겁 (Feat. 야수) | |
[784386] N.D.(Night Delight), [2289863] 한번 더, [5454410] 한번 더 | |
[718938] Chvrches, [2289898] Get Away, [5454652] Get Away | |
[776460] Pvris, [2289498] White Noise, [5450664] White Noise | |
[420527] 어반자카파, [2288961] [04], [5445197] 미운 나 | |
[575692] Denzal Park, [2289693] Into The Light (Radio Edit), [5452680] Into The Light (Radio Edit) | |
[750333] Raleigh Ritchie, [2289899] Cuckoo, [5454653] Cuckoo | |
[509820] D. Heaven, [2289835] 그래도 너였어, [5454207] 그래도 너였어 | |
[685125] 정연승, [2289870] 회자정리 거자필반, [5454429] 낯선 (Feat. 오지은) | |
[781093] Jasmine V, [2289887] That`s Me Right There, [5454528] That’s Me Right There (Feat. Kendrick Lamar) | |
[13846] 추승엽, [2289902] Keep It, [5454657] Keep It | |
[602056] 지코 (ZICO), [2289391] Tough Cookie, [5449581] Tough Cookie (Feat. Don Mills) | |
[190493] 언터쳐블, [2289703] 길이 보여, [5452795] 길이 보여 (Feat. 바스코, 기리보이) | |
[524801] DK (디셈버), [2289714] CS Numbers Vol.10, [5452927] 너의 말투로 살아 | |
[789870] Borns, [2290035] 10,000 Emerald Pools, [5455884] 10,000 Emerald Pools | |
[785759] 임도혁, [2289903] 슈퍼스타K6 TOP11 Part 5, [5454668] 바보 같은 내게 | |
[735961] Max Frost, [2289838] Paranoia, [5454239] Paranoia | |
[418666] Paloma Faith, [2289861] Ready For The Good Life, [5454401] Ready For The Good Life | |
[784668] The New Basement Tapes, [2289895] Lost On The River (Deluxe Edition), [5454603] When I Get My Hands On You | |
[786883] 김명기, [2289961] 나의 노래, [5455030] 나의 노래 | |
[402544] Selena Gomez, [2290058] The Heart Wants What It Wants, [5456069] The Heart Wants What It Wants | |
[698411] Seven Lions, [2290095] Lucy, [5456441] Lucy | |
[42] 최백호, [2289905] 가족끼리 왜 이래 OST Part.2, [5454675] 길 위에서 | |
[100594] 부활, [2289904] 불후의 명곡 - 전설을 노래하다 (전설의 포크 듀오 2편), [5454673] 하얀 손수건 | |
[785601] 제이스타, [2289950] HELLO, [5454983] HELLO (Feat. 주대건 Of 소리얼) | |
[674297] 크로스진, [2289952] 어려도 남자야, [5454999] 어려도 남자야 | |
[225182] 제미니, [2289954] 미녀의 탄생 OST Part 2, [5455001] 나만 몰랐어 | |
[168856] 김우주, [2289968] More Softly, [5455114] Baby You | |
[102519] 슈가 도넛, [2290022] Double Minus, [5455803] 아름다운 인생 | |
[593751] 고래야, [2290154] 넘어갔네, [5456991] 넘어갔네 | |
[510447] 제이레빗, [2290109] 좋은 느낌, [5456623] 좋은 느낌 | |
[771375] 정재원 (a.k.a 적재), [2289858] 한마디, [5454381] 다시 | |
[789331] 러블리즈, [2289906] 어제처럼 굿나잇, [5454678] 어제처럼 굿나잇 | |
[483581] 틴탑, [2289959] TEEN TOP 20`S LOVE TWO `EXITO`, [5455020] 우린 문제 없어 (I`m Sorry) | |
[686920] AOA, [2290102] 사뿐사뿐, [5456521] 사뿐사뿐 | |
[100594] 부활, [2290116] TO BE ONE, [5456661] TO BE ONE (Feat. 안세권) | |
[569214] 울랄라세션, [2290132] 지금 우는 사람들, [5456806] 지금 우는 사람들 | |
[314367] Dok2, [2290156] 치키차카초코초, [5456994] 치키차카초코초 | |
[789978] HI SUHYUN, [2290103] 나는 달라, [5456526] 나는 달라 (Feat. BOBBY) | |
[588431] 팬텀, [2290140] 이제 보니까, [5456858] 이제 보니까 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment