>백엔드 개발 >파이썬 튜토리얼 >Python은 qq 음악 및 일괄 다운로드에서 음악 URL을 크롤링합니다.

Python은 qq 음악 및 일괄 다운로드에서 음악 URL을 크롤링합니다.

高洛峰
高洛峰원래의
2017-03-24 16:23:452379검색

이 글은 주로 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)

#Code

여기 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')

#Download:

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파일에 작성되어 있으며, 이를 실행하면 키워드에 해당하는 음악을 다운로드 받을 수 있습니다


# 실행 효과:

다운로드 시작, 아래... 다운로드 디렉토리로 이동하여 살펴보세요.

Python爬取qq music中的音乐url及批量下载的方法

음악이 성공적으로 다운로드되었습니다. . .

Python爬取qq music中的音乐url及批量下载的方法이제 qqmusic의 URL 크롤러 프로그램 아이디어 및 구현에 대한 설명이 완료되었습니다.

#Usage:

쉘을 만들어 본 MusicPlayer 학생들도 사용할 수 있을 것입니다. 사실 이 작업의 원래 의도는 HTML 기반 음악 플레이어를 제공하는 것입니다. 그런데 지금은 py를 호출하는 js의 링크에 갇혀 있습니다. 이해하시면 알려주세요.

위 내용은 Python은 qq 음악 및 일괄 다운로드에서 음악 URL을 크롤링합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.