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()
핵심 코드 해석모두 세 개의 함수 가 있다.
get_music_name_link
은 주로 음악 이름과 음악의 다운로드 링크download_music
.트랙 이름 을 가 져 온 다음 에 다운로드 링크 와 음악 이름 을 연결 하여 호출you-get
을 해당 디 렉 터 리 에 다운로드 하기 시작 합 니 다main
은 주로 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 만 누 르 는 것 이다!그 러 니 아 쉬 운 대로 쓰 세 요.기능 이 완비 되 어 있 습 니 다!이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Python Selenium XPath 텍스트 내용에 따라 요소 찾기 방법문제 현상 요소의 속성에 id,name이 없습니다.class가 있지만 비교적 대중적이고 위치도 고정되지 않는다.예를 들어 페이지 번호의 다음 페이지;그러면 어떻게 이 원소를 찾아야 합니까? 해결 방법 text() t...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.