python爬取网易云音乐数据

python爬取网易云音乐数据
1.首先导入2个第三方库,json库是标准库,用到的有Requests库,Beautisoup库,json库
2.分析网站,当然是f12 开发者工具了,firefox浏览器的开发者工具个人用着比chrome的好用一点。
用开发者工具之前要先明白你要找什么数据,我想抓取的是霹雳布袋戏的所有歌曲信息(顺便安利下霹雳布袋戏)
python爬取网易云音乐数据
抖个机灵,通过我仔细观察,我发现通过改url的limit参数(每页显示的专辑数量),offset参数(当前页)就能获取某用户的所有专辑,这样能避免抓取的数据有很多页而要考虑下一页的情况。
url = “https://music.163.com/artist/album?id=12639&limit=200&offset=0”
验证我的想法,我用的是chrome的servistate插件,
python爬取网易云音乐数据
确认这个接口就是我们需要的。

3.动手写第一个函数,发送request请求,返回它的二进制格式,因为这个函数请求json数据的时候也会用到。
python爬取网易云音乐数据
4.然后就是beautifulsoup库提取出我们想要的数据
python爬取网易云音乐数据
通过观察get请求的响应内容,我发现专辑id放在"tit s-fc0"的标签里,同理找到专辑name和专辑的创作时间,我们用beautifulsoup对象的finda_all方法,将之提取出来。
5.专辑的id有了,我想要的是每一张专辑里面所有曲子的详细信息,同理我们再去找有歌曲信息的请求,找了半天发现每首曲子的信息是以json格式传给我们的,并且是个post请求,有两个参数是通过js加密生成的,一个是当前时间戳加密一个是随机字符,反正就是很麻烦。找了半天,又发现有一个通过get请求就可以获取到数据的接口。
http://music.163.com/api/v1/resource/comments/R_SO_4_”+songid
就是这个接口,还是使用chrome的servistate插件验证一下我的猜测,
python爬取网易云音乐数据
我们发现它返回的是json字符串,然后我们通过json库和beautifulsoup库解析提取出我们需要的数据。
python爬取网易云音乐数据
我们需要的数据就抓取下来了,然后用xlwt库写入到excel表格中。学会使用开发者工具,需要明白的不只是python的知识,还需要html的知识,知道request请求和response响应。
完整代码放在兰奏云 https://www.lanzous.com/i20inwf