이 글은 주로 Python을 사용하여 qq 음악을 크롤링하는 방법을 소개합니다. 음악 URL에 대한 자세한 소개와 샘플 코드 및 일괄 다운로드 관련 정보는 모두에게 참고할만한 가치가 있다고 생각합니다.
머리말
qq 뮤직에는 아직도 음악이 많아요. 가끔 좋은 음악을 다운받고 싶은데, 웹페이지에서 다운받을 때마다 로그인을 해야 하는 경우가 있어요. , 여기 qqmusic 크롤러가 있습니다. 적어도 for 루프 크롤러의 핵심은 크롤링할 요소의 URL을 찾는 것이라고 생각합니다(틀렸다고 해서 웃지 마세요)
구현 방법은 다음과 같습니다
#URL 찾기:
이 URL은 쉽지 않습니다. 다른 웹사이트처럼 찾아보세요. 핵심은 데이터가 많다는 것입니다. 이렇게 많은 데이터에서 유용한 데이터를 골라서 최종적으로 어제 편집한 중간 URL은 다음과 같습니다.
#.url1: https://c.y.qq.com/soso/fcgi-bin/client_search_cp?&lossless=0&flag_qc=0&p=1&n=20&w=雨die
#url2: https: //c.y.qq.com/base /fcgi-bin/fcg_music_express_mobile3.fcg?&jsonpCallback=MusicJsonCallback&cid=205361747&[songmid]&C400+songmid+.m4a&guid=6612300644
#url3:http://dl.stream.qqmusic .qq.com/[filename] ?vkey=[vkey] (여기서 vkey는 음악 관련 문자열 을 대체합니다)
requests(url1)
검색 목록 songmid 및 mid의 각 음악 값(저자의 관찰에 따르면 이 두 값은 각 음악마다 고유함) 이 두 값을 사용하면
의 완전한 특정 값을 얻을 수 있습니다. 검색 결과에서 각 음악의 vkey 값을 가져옵니다. 작성자가 관찰한 후 파일 이름은 C400songmid.m4a입니다. 그런 다음 url3의 특정 값이 결정되고 url3은 음악의 실제 URL입니다. 충분하므로 매번 최대 20개의 음악 URL이 반환되므로 해당 URL을 통해 Tencent의 음악을 최대한 즐길 수 있습니다. requests(url2)
여기 srcs 코드 블록이 있습니다: import requests
import urllib
import json
word = '雨蝶'
res1 = requests.get('https://c.y.qq.com/soso/fcgi-bin/client_search_cp?&t=0&aggr=1&cr=1&catZhida=1&lossless=0&flag_qc=0&p=1&n=20&w='+word)
jm1 = json.loads(res1.text.strip('callback()[]'))
jm1 = jm1['data']['song']['list']
mids = []
songmids = []
srcs = []
songnames = []
singers = []
for j in jm1:
try:
mids.append(j['media_mid'])
songmids.append(j['songmid'])
songnames.append(j['songname'])
singers.append(j['singer'][0]['name'])
except:
print('wrong')
for n in range(0,len(mids)):
res2 = requests.get('https://c.y.qq.com/base/fcgi-bin/fcg_music_express_mobile3.fcg?&jsonpCallback=MusicJsonCallback&cid=205361747&songmid='+songmids[n]+'&filename=C400'+mids[n]+'.m4a&guid=6612300644')
jm2 = json.loads(res2.text)
vkey = jm2['data']['items'][0]['vkey']
srcs.append('http://dl.stream.qqmusic.qq.com/C400'+mids[n]+'.m4a?vkey='+vkey+'&guid=6612300644&uin=0&fromtag=66')
srcs, 다운로드는 당연히 문제가 되지 않습니다. 물론 src를 브라우저에 복사하여 가수와 노래 제목을 다운로드할 수도 있습니다. 또한 대규모 Python을 사용하여 일괄적으로 다운로드할 수도 있습니다. 이는 우리가 sogou그림을 다운로드하는 데 사용한 방법과 유사하며 루프에 불과합니다. (작성자의 py 버전: python3.3.3)
print('For '+word+' Start download...') x = len(srcs) for m in range(0,x): print(str(m)+'***** '+songnames[m]+' - '+singers[m]+'.m4a *****'+' Downloading...') try: urllib.request.urlretrieve(srcs[m],'d:/music/'+songnames[m]+' - '+singers[m]+'.m4a') except: x = x - 1 print('Download wrong~') print('For ['+word+'] Download complete '+str(x)+'files !')위 두 코드는 동일한 py파일에 작성되어 있으며, 이를 실행하면 키워드에 해당하는 음악을 다운로드 받을 수 있습니다
# 실행 효과:
이제 qqmusic의 URL 크롤러 프로그램 아이디어 및 구현에 대한 설명이 완료되었습니다.
#Usage:쉘을 만들어 본 MusicPlayer 학생들도 사용할 수 있을 것입니다. 사실 이 작업의 원래 의도는 HTML 기반 음악 플레이어를 제공하는 것입니다. 그런데 지금은 py를 호출하는 js의 링크에 갇혀 있습니다. 이해하시면 알려주세요.
위 내용은 Python은 qq 음악 및 일괄 다운로드에서 음악 URL을 크롤링합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!