python Selenium 유 료 음악 대량 다운로드 실현 방법

필수 환경
군말
매년 집에 돌아 오 면 아버 지 를 도와 음악 을 내 려 주 셔 야 합 니 다.이것 은 저 에 게 익숙 한 길 입 니 다!그러나 내 가 왕 이 운 을 열 고 다운로드 단 추 를 눌 렀 을 때,애석 하 게 도 이미 옳 고 그 름 이 었 다!

VIP 를 개설 하 는 것 도 사실 비 싸 지 않 습 니 다.임시로 사용 해도 됩 니 다.그러나 IT 남 의 존엄 성 은 있어 야 하기 때문에 검색엔진 을 한 가 롭 게 거 닐 기 시작 했다.

마지막 으로 알 고 있 는 중 에 인터넷 주 소 를 검색 하 였 습 니 다VIP 유 료 음악 해석.
P.S.이 서 비 스 를 제공 해 주신 작가 님 께 다시 한 번 감 사 드 립 니 다!다운로드 한 음악 수가 많 지 않 으 면 여기 서 다운 로드 를 검색 하고 다운로드 한 후 파일 이름 을 수정 하면 됩 니 다!그리고 이 사이트 에서 클릭 - 하면 왕 이 운 의 노래 리스트 를 동기 화 할 수 있 습 니 다!그 후에 대량으로 다운로드 하 는 것 은 바로 이 왕 이 클 라 우 드 의 노래 리스트 를 다운로드 하 는 것 입 니 다!하지만 한 트랙 리스트 에 있 는 수백 곡 의 노래 를 다운로드 하면 수 동 으로 다운로드 하 는 것 은 비 현실 적 이다! 에서 왕 이 클 라 우 드 UID 를 입력 해 야 합 니 다.이 UID 를 가 져 오 는 방법 은 다음 과 같 습 니 다.첫 번 째 로 왕 이 클 라 우 드 를 열 고 아무 노래 나 선택 하고 오른쪽 단 추 를 누 르 십시오
그리고 아무 데 나 이 링크 를 붙 여 넣 으 세 요.예 를 들 어https://music.163.com/song?id=25727803&userid=275613591마지막 에 이 숫자 가 UID 입 니 다!
프로그램 실행 환경
첫 번 째 설치python3,이 건 간단 하 죠?내 버 전 python 3.65 를 붙 이 고 설치 할 때 체크Add in path두 번 째 다운로드FFmpeg는 동 영상 과 오디 오 를 분석 하 는 데 사용 되 며you-get의 보조 도구 로 서여기다운로드 후 압축 을 풀 고 환경 변 수 를 추가 하면 됩 니 다.
세 번 째 설치you-get,이것 은 비디오 오디 오 를 다운로드 하 는 신기 입 니 다.관심 이 있 으 면 깊이 연구 할 수 있 습 니 다!이후 에 나 는 임의의 동 영상 을 다운로드 하 는 도 구 를 쓸 계획 이다.헤헤,이것 은 뒷말 이다!설치 방식 이 간단 하 다pip install you-get환경 설정 이 이렇게 되 어 있 습 니 다.아주 가 볍 습 니 다.다음은 코드 를 설명 하 겠 습 니 다.
소스 코드
전체 코드

from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
import time, os
# import threding

def get_music_name_link():
  main_handle = browser.current_window_handle
  fp = open('E:\\Project_PY\\file\\musiclink.txt','wb')
  fp2 = open('E:\\Project_PY\\file\\musicname.txt','wb')
  try:
    for i in list(range(2,400)):
      browser.switch_to_window(main_handle)
      txt = browser.find_element_by_xpath('/html/body/div[3]/div/div[2]/div[2]/div[1]/div/div[%d]' % i).text + '
' fp2.write(bytes(txt,encoding='utf-8')) location = browser.find_element_by_xpath('/html/body/div[3]/div/div[2]/div[2]/div[1]/div/div[%d]' % i) ActionChains(browser).move_to_element(location).perform() browser.find_element_by_xpath('/html/body/div[3]/div/div[2]/div[2]/div[1]/div/div[%d]/span[5]/div/span[2]' % i).click() time.sleep(2) all_handles = browser.window_handles browser.switch_to_window(all_handles[-1]) # lastest url_link = browser.current_url + '
' fp.write(bytes(url_link,encoding='utf-8')) browser.close() except Exception as e: print('get_music_name_link meet some problem! {}'.format(e)) fp.close() fp2.close() def download_music(list_name): with open('E:\\Project_PY\\file\\musicname.txt','r',encoding='utf-8') as fp1: music_name = fp1.readlines() len1 = len(music_name) fp2 = open('E:\\Project_PY\\file\\musicname_format.txt','w',encoding='utf-8') for i in range(3,len1,4): music_name_format = music_name[i].strip() + '
' fp2.write(music_name_format) fp2.close() with open('E:\\Project_PY\\file\\musiclink.txt','r',encoding='utf-8') as fp1: with open('E:\\Project_PY\\file\\musicname_format.txt','r',encoding='utf-8') as fp2: for music_link,music_name in zip(fp1.readlines(),fp2.readlines()): you_get_link = 'you-get "{}" -o "E:\\Project_PY\\file\\music\\{}" -O "{}"'.format(music_link.strip(),list_name,music_name.strip()) you_get_link = you_get_link.strip() # print(you_get_link) os.system(you_get_link) url = 'http://music.zhuolin.wang/' uid = input('please input your uid:') options = webdriver.FirefoxOptions() options.add_argument('--headless') browser = webdriver.Firefox(firefox_options=options) browser.implicitly_wait(8) browser.get(url) # browser.maximize_window() browser.set_window_size(1000,100000) browser.find_element_by_xpath('/html/body/div[3]/div/div[1]/div/span[3]').click() # scroll = browser.find_element_by_xpath('//*[@id="mCSB_1_dragger_vertical"]') # ActionChains(browser).drag_and_drop_by_offset(scroll,0,100).perform() # time.sleep(2) all_handles = browser.window_handles browser.switch_to_window(all_handles[-1]) # lastest time.sleep(1) browser.find_element_by_xpath('/html/body/div[3]/div/div[2]/div[1]/div[1]/div/span/div[2]/span').click() all_handles = browser.window_handles browser.switch_to_window(all_handles[-1]) # lastest time.sleep(1) browser.find_element_by_xpath('/html/body/div[6]/div[2]/input').send_keys(uid) browser.find_element_by_xpath('/html/body/div[6]/div[3]/a[1]').click() # t1 = threading.Thread(target=get_music_name) # t2 = threading.Thread(target=get_music_link) # t3 = threading.Thread(target=download_music) for i in list(range(3,100)): try: print('downloading song_list{}! please waiting....'.format(i)) browser.find_element_by_xpath('/html/body/div[3]/div/div[2]/div[1]/div[1]/div/div[%d]/img' % i).click() dir_name = browser.find_element_by_xpath('/html/body/div[3]/div/div[2]/div[1]/div[1]/div/div[%d]/p' % i).text time.sleep(1) get_music_name_link() download_music(dir_name) browser.find_element_by_xpath('/html/body/div[3]/div/div[1]/div/span[3]').click() time.sleep(1) all_handles = browser.window_handles browser.switch_to_window(all_handles[-1]) # lastest time.sleep(5) except Exception as e: print('get_song_list meet some problem! {}'.format(e)) browser.quit()
핵심 코드 해석
모두 세 개의 함수 가 있다.
  • 함수 1get_music_name_link은 주로 음악 이름과 음악의 다운로드 링크
  • 를 가 져 옵 니 다.
  • 함수 2download_music.트랙 이름 을 가 져 온 다음 에 다운로드 링크 와 음악 이름 을 연결 하여 호출you-get을 해당 디 렉 터 리 에 다운로드 하기 시작 합 니 다
  • 함수 3main은 주로 UID 를 이용 하여 노래 목록 을 얻 고 노래 목록 의 곡 을 대량으로 다운로드 합 니 다
  • .
    주의해 야 할 몇 가지 점:
    1.사용sleep(1)휴면 1 초,네트워크 가 느 리 면 모든sleep휴면 시간 을 늘 려 야 합 니 다.
    2.모든 경 로 는 이 컴퓨터 에 따라 스스로 수정 해 야 합 니 다.
    3.코드 를 수정 하려 면switch_to_window창 을 전환 하 는 데 주의해 야 합 니 다.
    4.73 줄for i in list(range(3,100))은 다운로드 한 트랙 리스트 를 선택 하 는 데 사용 되 며,트랙 리스트 는 1 부터 계산한다.

    프로그램 데모
    왕 이 클 라 우 드 의 UID 를 입력 하 세 요!

    그리고 조용히 기다 리 시 면 됩 니 다.이 과정 에서 일부 음악 이 재생 되 는 소리 가 있 습 니 다.마음 에 들 지 않 으 면 음소 거 를 켜 도 됩 니 다.

    모든 링크 분석 이 완료 되면 호출you-get을 통 해 다운로드 합 니 다.이 과정 에서 노래 제목 과 같은 폴 더 를 자동 으로 만 듭 니 다.

    다운로드 완료 후


    P.S.모든 트랙 리스트 를 다운로드 하려 면 코드 수정 없 이 왕 이 클 라 우 드 의 UID 실행 을 입력 하면 됩 니 다!구체 적 인 곡 을 다운로드 하려 면 73 줄 의 이 순환for i in list(range(3,100))만 바 꿔 야 하기 때문에 프로그램 이 간단 하 다.단점 은 UI 를 쓸 시간 이 없고 pyqt 같은 것 도 잘 못 하고 MFC 만 누 르 는 것 이다!그 러 니 아 쉬 운 대로 쓰 세 요.기능 이 완비 되 어 있 습 니 다!
    이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

    좋은 웹페이지 즐겨찾기