Python爬虫之网易云歌单音频爬取(解决urlretrieve爬取文件不能播放问题) | 您所在的位置:网站首页 › 网易云歌突然播放不了怎么回事呢 › Python爬虫之网易云歌单音频爬取(解决urlretrieve爬取文件不能播放问题) |
网易云歌单音频爬取
写在前面:最近学习爬虫,对小说和图片都进行过简单爬取,所以打算爬取音频,但是其中遇到点问题也解决了,写下博客记录并希望对大家也有帮助。 爬取对象:对于目前主流的几个音频播放网站,我选取的是网易云(个人对其“情有独钟”),可以在浏览器上直接搜索网易云音乐的网页即可。 我们爬取的是网易云网页上的歌单里的音频, 获取响应: 正如之前博客提到的,既然是爬虫,就要获取网页的响应,所以我们可以编写代码: import requests if __name__=='__main__': header = { "User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.135 Safari/537.36" }#伪装爬虫 response = requests.get("https://music.163.com/playlist?id=2829883282",headers = header) response.encoding = 'utf-8' html = response.text print(html)这里与之前的不同,设置了一个header,因为网易云有防爬(虽然目前还是可以不用),还是在之前的Network的headers中 所以我们可以编写代码: import requests from bs4 import BeautifulSoup if __name__=='__main__': header = { "User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.135 Safari/537.36" } response = requests.get("https://music.163.com/playlist?id=2829883282",headers = header) response.encoding = 'utf-8' html = response.text bf = BeautifulSoup(html,"lxml") texts = bf.find('ul', class_="f-hide") texts = texts.find_all('a') music_name = [] music_url = [] server = "http://music.163.com/song/media/outer/url" for i in texts: music_name.append(i.string) url = str(server) + i.get("href")[5:] + ".mp3" music_url.append(url) print(url)如此我们就获取了歌单里的音频的所有外链: 运行之后我们在目录下可以看到音频 运行后结果是相同的,可以选取自己需要的方法。 当然网易云中的会员曲目这里是爬取不了的(我们还是尊重会员权益),但是你如果有自己想听的歌曲,一样记住前缀,得到它的ID就可以进行爬取下载。 希望这篇博客对大家有帮助! |
CopyRight 2018-2019 实验室设备网 版权所有 |