目录:
*** 1.简介怎样实现下载QQ音乐的过程;***
*** 2.代码***
1 .下载QQ音乐的过程
首先我们先来到QQ音乐的官网: https://y.qq.com/, 在搜索栏上输入一首歌曲的名称;
如我在上输入最美的期待,按回车来到这个画面
我们首先要得到这些歌曲名称和其他一些信息
鼠标右键查看源代码发现这些数据应该应用了反爬虫
发现这里好像有我们需要的数据
那么这个网址要怎样才能得到呢!其实也不难发现,就下面的那个w=不同而已,对于不同歌曲。
而这个w=后面的那个数据好像就是我输入的歌曲名,最美的期待,只不过这里对于这个进行了编码罢了。
我们只要这样输入就可以了
from urllib import parse
w=parse.urlencode({'w':input('输入歌名:')})
print(url)
这样我们就得到了这个url
这样得到的数据是一个字符串,这个字符串类似'{'key':{'key_1':1}}',我们可以导入json模块,来处理它,这样我们得到的数据就是一个字典了。
我们点击其中的一首歌试听,来到这个界面
右击鼠标,点击检查,点击NetWork,点击XHR,找到下面这个网址发现
在这里我们可以发现有这首歌曲的下载地址,发现purl下面的一个参数是上面得到的那个数据中的'mid',只要将两者结合起来,就可以下载这首歌曲了。
代码如下:
|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 | <em><strong><br>``import
urllib.parse as parse
from
urllib.request ``import
urlretrieve
import
requests
import
json
import
os
import
time
import
sys
def
Time_1(): ``# 进度条函数
``for
i ``in
range``(``1``,``51``):
``sys.stdout.write(``'\r'``)
``sys.stdout.write(``'{0}% |{1}'``.``format``(``int``(i``%``51``)``*``2``,``int``(i``%``51``)``*``'■'``))
``sys.stdout.flush()
``time.sleep(``0.125``)
``sys.stdout.write(``'\n'``)
print``(``'''
声明:本小程序仅供娱乐和学习,切莫用于商业用途,一经发现,概不负责!
'''``)
w``=``parse.urlencode({``'w'``:``input``(``'输入歌名:'``)})
url``=``'https://c.y.qq.com/soso/fcgi-bin/client_search_cp?ct=24&qqmusic_ver=1298&new_json=1&remoteplace=txt.yqq.song&searchid=63229658163010696&t=0&aggr=1&cr=1&catZhida=1&lossless=0&flag_qc=0&p=1&n=10&%s&g_tk=5381&loginUin=0&hostUin=0&format=json&inCharset=utf8&outCharset=utf-8¬ice=0&platform=yqq.json&needNewCode=0'``%``(w)
content``=``requests.get(url``=``url)
str_1``=``content.text
dict_1``=``json.loads(str_1)
song_list``=``dict_1[``'data'``][``'song'``][``'list'``]
str_3``=``'''https://u.y.qq.com/cgi-bin/musicu.fcg?-=getplaysongvkey5559460738919986&g_tk=5381&loginUin=0&hostUin=0&format=json&inCharset=utf8&outCharset=utf-8¬ice=0&platform=yqq.json&needNewCode=0&data={"req":{"module":"CDN.SrfCdnDispatchServer","method":"GetCdnDispatch","param":{"guid":"1825194589","calltype":0,"userip":""}},"req_0":{"module":"vkey.GetVkeyServer","method":"CgiGetVkey","param":{"guid":"1825194589","songmid":["%s"],"songtype":[0],"uin":"0","loginflag":1,"platform":"20"}},"comm":{"uin":0,"format":"json","ct":24,"cv":0}}'''
url_list``=``[]
music_name``=``[]
for
i ``in
range``(``len``(song_list)):
``music_name.append(song_list[i][``'name'``]``+``'-'``+``song_list[i][``'singer'``][``0``][``'name'``])
``print``(``'{}.{}-{}'``.``format``(i``+``1``,song_list[i][``'name'``],song_list[i][``'singer'``][``0``][``'name'``]))
``url_list.append(str_3 ``%
(song_list[i][``'mid'``]))
id``=``int``(``input``(``'请输入你想下载的音乐序号:'``))
content_json``=``requests.get(url``=``url_list[``id``-``1``])
dict_2``=``json.loads(content_json.text)
url_ip``=``dict_2[``'req'``][``'data'``][``'freeflowsip'``][``1``]
purl``=``dict_2[``'req_0'``][``'data'``][``'midurlinfo'``][``0``][``'purl'``]
downlad``=``url_ip``+``purl
try``:
``os.mkdir(``'./QQ音乐'``)
except``:
``pass
finally``:
``try``:
``print``(``'开始下载...'``)
``urlretrieve(url``=``downlad,filename``=``'./QQ音乐/{}.mp3'``.``format``(music_name[``id``-``1``]))
``Time_1()
``print``(``'{}.mp3下载完成!'``.``format``(music_name[``id``-``1``]))
``except
Exception as e:
``print``(e,``'对不起,你没有该歌曲的版权!'``)<br>
<``/``strong><``/``em>
|
运行结果:
下载完成后,会在同一个文件下面多了一个QQ音乐的文件夹,所下载的歌曲就在这里面。
最后: 如果你对Python感兴趣,想要学习Python,希望可以帮到你,一起加油!以上是给大家分享的Python全套学习资料,都是我自己学习时整理的:
一、Python所有方向的学习路线
Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
二、学习软件
工欲善其事必先利其器。学习Python常用的开发软件都在这里了,还有环境配置的教程,给大家节省了很多时间。
三、全套PDF电子书
书籍的好处就在于权威和体系健全,刚开始学习的时候你可以只看视频或者听某个人讲课,但等你学完之后,你觉得你掌握了,这时候建议还是得去看一下书籍,看权威技术书籍也是每个程序员必经之路。
四、入门学习视频全套
我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。
五、实战案例
光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
**学习资源已打包,需要的小伙伴可以戳这里:【学习资料】