-
파이썬 공부 #2 - Selenium으로 유튜브에서 멜론 Top100 재생Programming/Python 2020. 1. 23. 21:00
유튜브는 역시 좋은것이여
우리는 보통 음악을 들을 때 스트리밍을 많이 사용합니다. 좋은 스트리밍 사이트는 많이 있죠. 멜론, 지니, 벅스 등등..
근데 상당히 많은 분들이 "노래를 듣는 용도"로 유튜브를 사용합니다. 프리미엄을 사용하는 분들도 있고, 유튜브 뮤직을 사용하는 분들도 있죠.
근데 대다수는 유튜브를 사용하는 이유가 '돈' 때문이 아닐까 생각해봅니다. 난 노래만 가끔 듣는데 월 만원에 육박하는 돈을 쓰기엔 좀 그렇다 이거죠.
그래서 유튜브엔 노래만 나오는 영상이 굉장히 많습니다. 그중에 가장 많은 비율을 차지하는 게 아무래도 0월 0일 멜론 Top 100 자동재생 같은 영상이죠.
멜론차트는 하루에도 몇십개의 영상이 올라옵니다. 예전의 경우 이런 영상이 저작권 침해인 경우도 있었지만, 요즘은 이런 영상의 수익이 모두 저작권자에게 돌아가게 되어서 듣는 사람 입장에서도 큰 죄책 감 없이 편하게 들을 수가 있습니다. 그래서 그런지 일할 때나 집에서 쉴 때나 이런 유의 영상을 틀어놓으시는 분들이 많습니다. 실제로 제 친구도 PC방에 가면 항상 유튜브에서 멜론탑백을 틀어놓고 시작합니다.
복잡한 세상, 조금이라도 편하게 살면 좋잖아요?
문득 이런 생각을 해봅니다.
"클릭 한 번으로 유튜브에서 멜론 탑백을 재생할 수는 없을까...?"
매번 크롬 열어서 주소창에 유튜브 치고, 검색창에 몇 월 며칠 멜론탑백 치고, 영상 골라서 클릭하고,,, 그러고 있기엔 우리 인생은 너무 짧습니다.
이런 단순한 반복을 대체하라고 컴퓨터가 있는 거고 우리가 파이썬을 배우는 게 아닐까요?
거 보고만 있지 말고 따라 해 보세요
자. 그럼 말만 하지 말고 실제로 타닥타닥 해보도록 합시다.
123import timeimport datetimefrom selenium import webdrivercs 실행할 때 당일의 날짜를 받아오기 위해datetime 모듈과 유튜브 페이지를 열기 위해 webdriver 모듈을 로드했습니다.
123# 오늘 날짜를 계산한다d = str(datetime.datetime.now().day)m = str(datetime.datetime.now().month)cs 오늘 날짜를 알아야 오늘의 멜론 차트를 재생하겠죠? datetime 모듈은 이 용도로 불러온 것입니다.
12345query = m + '월' + d + '일 멜론'query2 = m + '월' + d + '일'driver = webdriver.Chrome("Study\drv.exe")cs 이를 이용해 검색어를 정의한 다음 Chromedriver를 통해 크롬을 열어줍니다.
크롬드라이버는 실행하는 파일과 같은 경로에 두거나 코드에 나온 것처럼 경로를 명시해야 오류가 안 납니다.
이제 우리는 크롬드라이버를 통해 크롬을 실행하는 것 까지 성공했습니다.
크롬드라이버를 통해 크롬을 실행하면 이런페이지가 나옵니다. 그럼 이제 유튜브에 접속해서 0월 00일 멜론 차트를 검색해서 노래를 들어야겠죠?
유튜브로 접속해서 Selenium을 통해 검색 필드에 내용을 직접 입력해서 검색하는 방법도 있지만, 더 간단한 방법을 사용해봅시다.
유튜브에서 1월 22일 멜론차트로 검색했을 때의 URL입니다.
굉장히 직관적인 url이죠? 따라서 driver에게 검색된 페이지를 바로 요청하면 불필요한 절차를 줄일 수 있습니다.
1driver.get("https://www.youtube.com/results?search_query=" + query)cs get() 은 driver에게 url을 매개변수로 받아 그 페이지를 엽니다.
그럼 이제 0월 00일 멜론차트를 검색한 페이지가 열리게 됩니다. 이제 영상의 링크를 클릭하기만 하면 우리는 이제 노래를 들을 수 있는 겁니다.
12345# 검색된 내용 중 링크 텍스트에 "{month}월 {day}일" 이 포함된 것을 찾는다.continue_link = driver.find_element_by_partial_link_text(query2)# 해당 링크를 클릭한다.continue_link.click()cs 성공! 생각보다 어렵지 않게 가능합니다.
이제 귀찮게 클릭클릭 반복하지 마시고 이 코드만 한번 실행하면 멜론탑백이 딱! 아주 편하겠죠? 너무 편하겠죠? 아니어도 그렇다고 하세요.
전체 코드는 서비스
12345678910111213141516171819202122232425# 웹 사이트 접속 후 검색하기, 페이지 열기# -*- coding: utf-8 -*-import timeimport datetimefrom selenium import webdriver# Chrome WebDriver를 이용해 Chrome을 실행한다.driver = webdriver.Chrome("Study\drv.exe")# 오늘 날짜를 계산한다d = str(datetime.datetime.now().day)m = str(datetime.datetime.now().month)query = m + '월' + d + '일 멜론'query2 = m + '월' + d + '일'driver.get("https://www.youtube.com/results?search_query=" + query)time.sleep(1)# 검색된 내용 중 링크 텍스트에 "{month}월 {day}일" 이 포함된 것을 찾는다.continue_link = driver.find_element_by_partial_link_text(query2)# 해당 링크를 클릭한다.continue_link.click()cs 개발환경
Python3@VS Code
Windows 10 1903 Build 18362.592 19H1
'Programming > Python' 카테고리의 다른 글
파이썬 공부 #1 - 크롤링으로 멜론 실시간 Top100 긁어오기 (0) 2020.01.22