【1.项目目标】通过Python抓取QQ音乐数据(1)实现了获取QQ音乐指定歌手单曲排名指定页码歌曲歌名、专辑名、播放链接。这次我们在之前的基础上得到了QQ音乐指定歌曲的歌词和前15条精彩评论。[2。需要的库】主要涉及到的库有:requests、json、html【3.项目实施】1、以歌曲《泡泡》为例,查看该接口的XHR。2.通过对XHR的Size进行排序,一个一个查看(参考英文意思),我们看到第一个红框是歌曲评论,第二个是歌词!3、分别查看两个dataHeader中的Parms参数。![]()4。发现这些参数可能代表不同的歌曲,到底是哪一首呢?我们再开一首歌对比一下。5.发现只有这个topid不一样,其他都一样。也就是说topid代表了不同歌曲的id。同样,让我们??看看歌词。6.确保:musicid=topid=歌曲的id,我们接下来的任务就是找到这个id。7.回到如下界面,就是我们上一个项目的主战场。参照上一项,不难发现“id”的值就是我们要找的id。于是思路确定:先通过input()输入歌名生成url_1找到歌曲的“id”参数,再生成url_2获取歌词和评论。8、代码实现:获取歌曲id,如下:***************importrequests,html,jsonurl_1='https://c.y.qq.com/soso/fcgi-...'headers={'user-agent':'Mozilla/5.0(WindowsNT6.1;WOW64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/63.0.3239.132Safari/537.36',/#标记请求是什么设备from,whatbrowsersendout}i=input('请输入需要查询歌词的歌曲名称:')params={'ct':'24','qqmusic_ver':'1298','new_json':'1','remoteplace':'txt.yqq.song','searchid':'71600317520820180','t':'0','aggr':'1','cr':'1','catZhida':'1','lossless':'0','flag_qc':'0','p':'1','n':'10','w':i,'g_tk':'5381','loginUin':'0','hostUin':'0','格式':'json','inCharset':'utf8','outCharset':'utf-8','通知':'0','platform':'yqq.json','needNewCode':'0'}res_music=requests.get(url_1,headers=headers,params=params)/#发起请求json_music=res_music.json()id=json_music'data''list'['id']print(id)9.代码实现entation:获取歌词的实现方法如下:***********************************url_2='https://c.y.qq.com/lyric/fcgi...'headers={'user-agent':'Mozilla/5.0(WindowsNT6.1;WOW64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/63.0.3239.132Safari/537.36',/#marks请求来自什么设备和浏览器}params={'nobase64':'1','musicid':id,/#使用上面获取的id'-':'jsonp1','g_tk':'5381','loginUin':'0','hostUin':'0','format':'json','inCharset':'utf8','outCharset':'utf-8','notice':'0','platform':'yqq.json','needNewCode':'0',}res_music=requests.get(url_2,headers=headers,params=params)/#发起请求js=res_music.json()lyric=js['lyric']lyric_html=html.unescape(lyric)/#使用转义字符html.unescape方法/#print(lyric_html)f1=open(i+'lyric.txt','a',encoding='utf-8')f1.writelines(lyric_html)f1.close()/#storetotxt中输入('下载成功,回车退出!')代码实现:获取注释*****************url_3='https://c.y.qq.com/base/fcgi-...'headers={'user-agent':'Mozilla/5.0(WindowsNT6.1;WOW64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/63.0.3239.132Safari/537.36',/#标记发送请求的设备和浏览器}params={'g_tk_new_20200303':'5381','g_tk':'5381','loginUin':'0','hostUin':'0','format':'json','inCharset':'utf8','outCharset':'GB2312','通知':'0','platform':'yqq.json','needNewCode':'0','cid':'205360772','reqtype':'2','biztype':'1','topid':id,'cmd':'8','needmusiccrit':'0','pagenum':'0','pagesize':'25','lasthotcommentid':'','domain':'qq.com','ct':'24','cv':'10101010'}res_music=requests.get(url_3,headers=headers,params=params)/#发起请求js=res_music.json()comments=js'hot_comment'f2=open(i+'comment.txt','a',encoding='utf-8')/#storeintxtforiincomments:comment=i['rootcommentcontent']+'n——————————————————————————————————————————-------------------------------------------------------------------------------------------------------------------)f2.close()input('下载完成成功,回车退出!')封装函数11.结果显示![]()[4.总结】1、项目2比项目1稍微复杂一点,多了一步获取歌曲id;2.一般使用json通过XHR爬取数据,格式为:***res=requests.get(url)json=res.json()list=json''...3.学习转义符html.unescape方法;4.保存到txt并使用open()as方法;5.Python爬取QQ音乐数据(第三弹)带你爬取更多评论并生成词云(wordcloud)6.需要本文源码的请点击公众号后台回复“QQ音乐””四个字得到。看完这篇文章你有收获吗?请转发分享给更多的人加入IT分享之家群,请在微信后台回复【进群】如果想深入了解Python网络爬虫和数据挖掘,可以上专业网站:http://pdcfighting.com/
