欢迎来到天天文库
浏览记录
ID:27888670
大小:61.00 KB
页数:6页
时间:2018-12-06
《抓取网易云音乐热歌榜里的热评的爬虫.doc》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、抓取网易云音乐热歌榜里的热评的爬虫抓取网易云音乐热歌榜里的热评的爬虫 前一段时间刚刚入门python爬虫,有大概半个月时间没有写python了,都快遗忘了。于是准备写个简单的爬虫练练手,我觉得网易云音乐最优特色的就是其精准的歌曲推荐和独具特色的用户评论,于是写了这个抓取网易云音乐热歌榜里的热评的爬虫。我也是刚刚入门爬虫,有什么意见和问题欢迎提出,大家一起共同进步。 废话就不多说了~ 我们的目标是爬取网易云中的热歌排行榜中所有歌曲的热门评论。 这样既可以减少我们需要爬取的工作量,又可以保存到高质量的评论。 首先,我们打开网易云网页版,如图: 点击排行榜,
2、然后点击左侧云音乐热歌榜,如图: 我们先随便打开一个歌曲,找到如何抓取指定的歌曲的热门歌评的方法,如图,我选了一个最近我比较喜欢的歌曲为例: 进去后我们会看到歌评就在这个页面的下面,接下来我们就要想办法获取这些评论。 接下来打开web控制台(chrom的话打开开发者工具,如果是其他浏览器应该也是类似),chrom下按F12,如图: 选则Network,然后我们按F5刷新一下,刷新之后得到的数据如下图所示: 可以看到浏览器发送了非常多的信息,那么哪一个才是我们想要的呢?这里我们可以通过状态码做一个初步的判断,statuscode(状态码)标志了
3、服务器请求的状态,这里状态码为200即表示请求正常,而304则表示不正常(状态码种类非常多,如果要想详细了解可以自行搜索,这里不说304具体的含义了)。所以我们一般只用看状态码为200的请求就可以了,还有就是,我们可以通过右边栏的预览来粗略观察服务器返回了什么信息(或者查看响应)。通过这两种方法结合一般我们就可以快速找到我们想要分析的请求。通过反复的查找,终于找到了含有歌评的请求,如图: 可能截图在CSDN上不是很清楚,我们在一个Name为R_SO_4_489998494?csrf_token=的POST请求中找到了包含这首歌的歌评。我们把这个分块截图发出来,这
4、样可以看的清楚一些: 请求基本信息: 请求头部: 请求中的表单数据: 我们可以看到,包含这首歌歌评的请求url为http://music.163.com/weapi/v1/resource/comments/R_SO_4_489998494?csrf_token=,我们换了几首歌后发现,这个请求的前部分都是一样的,只是R_SO_4_后面紧跟的一串数字不一样。我们可以推测出,每一首歌都有一个指定的id,R_SO_4_后面紧跟的就是这首歌的id。 我们再看一下提交的表单数据,我们会发现表单中需要填两个数据,名称为params和encSecKey。后面
5、紧跟的是一大串字符,换几首歌会发现,每首歌的params和encSecKey都是不一样的,因此,这两个数据可能经过一个特定的算法进行加密过的。 服务器返回的和评论相关的数据为json格式的,里面含有非常丰富的信息(比如有关评论者的信息,评论日期,点赞数,评论内容等等),其中hotComments就是我们要找的热门评论,总共15条,如图所示: 至此,我们已经确定了方向了,即只需要确定params和encSecKey这两个参数值即可。但是这两个参数是经过特定的算法进行加密的,怎么办呢?我发现了一个规律,http://music.163.com/weapi/v1/r
6、esource/comments/R_SO_4_489998494?csrf_token=中R_SO_4_后面的数字就是这首歌的id值,而对于不同的歌曲的param和encSecKey值,如果把一首歌比如A的这两个参数值传给B这首歌,那么对于相同的页数,这种参数是通用的,即A的第一页的两个参数值传给其他任何一首歌的两个参数,都可以获得相应歌曲的第一页的评论,对于第二页,第三页等也是类似。 而我们其实只需要获取第一页的15条热门评论,所以我们只需要随便找一首歌,将这首歌第一页中的该请求中的params和encSecKey这两个参数值复制下来,就可以使用了。 关于这两
7、个参数如何解密,强大的知乎上其实已经有答案的了,感兴趣的朋友可以进去看一下(https://www.zhihu.com/question/36081767),我们在这里就只需要用我们这种偷懒的办法就可以完成需求了,xixi。 到此为止,我们如何抓取网易云音乐的热门评论已经分析完了,我们再分析一下如何获取云音乐热歌榜中所有歌曲的信息。 我们需要获取云音乐热歌榜中的所有歌曲的歌曲名和对应的id值。 跟上面的分析步骤类似,我们先进入热歌榜的网址,如图: 按F12,进入WEB工作台,如图: 我们在一个名为toplist?id=3778678
此文档下载收益归作者所有