小编给大家分享一下利用python爬取网易云音乐热歌榜的案例,希望大家阅读完这篇文章后大所收获,下面让我们一起去探讨吧!

首先找到要下载的歌曲排行榜的链接,这里用的是:

https://music.163.com/discover/toplist?id=3778678

然后更改你要保存的目录,目录要先建立好文件夹,例如我的是保存在D盘-360下载-网易云热歌榜文件夹内,就可以完成下载。

如果文件夹没有提前建好,会报错[Errno 2] No such file or directory。

代码实现:

fromurllibimportrequestfrombs4importBeautifulSoupimportreimportrequestsimporttimeclassMusic(object):def__init__(self,baseurl,path):head={"user-agent":"Mozilla/5.0(WindowsNT10.0;WOW64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/69.0.3497.100Safari/537.36"}self.baseurl=baseurlself.headers=headself.path=pathdefmain(self):html=self.askurl()bs4=self.analysis(html)name1=self.matching(bs4)self.save(name1)defaskurl(self):req=request.Request(url=self.baseurl,headers=self.headers)response=request.urlopen(req)html=response.read().decode("utf-8")returnhtmldefanalysis(self,html):soup=BeautifulSoup(html,"html.parser")bs4=soup.find_all("textarea")bs4=str(bs4)returnbs4defmatching(self,bs4):rule0=re.compile(r'"name":"(.*?)","tns":[],"alias":[]')name0=re.findall(rule0,bs4)str=""foriinname0:str=str+","+istr=str.replace("\xa0","")rule1=re.compile(r'jpg,(.*?),(.*?)","id":(\d*)')name1=re.findall(rule1,str)returnname1defsave(self,name1):forjinname1:print("正在下载:"+j[1]+"-"+j[0]+"...")url="http://music.163.com/song/media/outer/url?id="+j[2]content=requests.get(url=url,headers=self.headers).contentwithopen(self.path+j[1]+"-"+j[0]+".mp3","wb")asf:f.write(content)print(j[1]+"-"+j[0]+"下载完毕。\n")time.sleep(0.5)returnif__name__=="__main__":baseurl="https://music.163.com/discover/toplist?id=3778678"#要爬取的热歌榜链接path="D:/360下载/网易云热歌榜/"#保存的文件目录demo0=Music(baseurl,path)demo0.main()print("下载完毕")

看完了这篇文章,相信你对利用python爬取网易云音乐热歌榜的案例有了一定的了解,想了解更多相关知识,欢迎关注亿速云行业资讯频道,感谢各位的阅读!