大家好,我是Python进阶。前言现在的听歌软件充斥着各种付费。您必须下载该软件才能收听。下载后,你会惊奇地发现这首歌还是收费的。这让一向喜欢卖淫的小编感到非常难过。于是,小编苦思冥想,终于让小编揭开了其中的奥秘,一起来看看吧。项目准备编辑:SublimeText3浏览器:360浏览器项目目标下载我们喜欢的音乐项目实现1.打开酷狗音乐官网,360浏览器打开酷狗音乐官网,如下图。可以看到非常清爽的画风,这也是我最喜欢的地方。2.检查元素,分析请求。打开Network分析请求,我们可以看到:从上图中,这是请求的参数,所以我们可以使用Requests模块向它发起请求。3.模拟发起请求。我们从网页上知道它的地址:https://www.kugou.com/yy/html/search.html#searchType=song&searchKeyWord=%E4%B8%8D%E8%B0%93%E4%BE%A0可以看到只有SearchKeyWord参数后面的值对我们真正有用。之前的搜索类型可以默认填写,所以我们可以这样:importrequestsheaders={'accept':'*/*','accept-encoding':'gzip,deflate,br','accept-language':'zh-CN,zh;q=0.9','cookie':'kg_mid=ebb2de813317a791bcf7b7d3131880c4;UM_distinctid=1722ba8b22632d-07ac0227c507a7-4e4c0f20-1fa400-1722ba8b2284a1;kg_dfid=0Q0BEI47P4zf0mHYzV0SYbou;kg_dfid_collect=d41d8cd98f00b204e9800998ecf8427e;Hm_lvt_aedee6983d4cfc62f509129360d??6bb3d=1590041687,1590280210,1590367138,1590367386;Hm_lpvt_aedee6983d4cfc62f509129360d??6bb3d=1590367431','referer':'https://www.kugou.com/yy/html/search.html','sec-fetch-mode':'no-cors','sec-fetch-site':'same-site','user-agent':'Mozilla/5.0(WindowsNT6.1;WOW64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/78.0.3904.108Safari/537.36'}aa=input('请输入歌曲名称:')data={'callback':'jQuery112408716317197794392_1590368232677','keyword':aa,'page':'1','pagesize':'30','userid':'-1','clientver':'','platform':'WebFilter','tag':'em','filter':'2','iscorrection':'1','privilege_filter':'0','_':'1590368232679',}res=requests.get('https://www.kugou.com/yy/html/search.html',params=data,timeout=4)print(res)这样就实现了模拟请求。验证一下:可以看到成功打印出了和我们上面一模一样的地址4.获取音乐文件列表rep=requests.get('https://www.kugou.com/yy/html/search.html',params=data,timeout=5)print(rep.url)res=requests.get(rep.url,timeout=4)print(res.text)我们正确填写请求地址后,发现内容不符合预期,但是有一批请求地址。我以为是结果:实际结果:可以看到差距很大,用Json根本搞不定。报告格式不对,说明不是Json。好像这个比QQ音乐还难。但是我们今天要下载的是一个音频文件,所以暂时跳过它,不要管它。5.下载音频文件。我们在搜索后弹出的列表中选择原曲,进去听:我选择第一首歌曲,这样打开,我们开始show操作,打开Network:我们输入后缀Mp3,然后定位到对应的请求,打开它的请求结果,可以看到一个Json结果:我们把Json结果粘贴到控制台,可以看到有一个关于Mp3的结果,但是加了一些干扰符号,我们提取出来:这样我们可以把酷狗音乐的歌曲下载下来。项目概要事实上,酷狗音乐不同于QQ音乐。其实还是抓取酷狗音乐的下载链接比较好。你可以直接在它的播放界面上抓取:模拟请求界面,一切搞定。
