爬取网易云音乐评论,延伸就能爬取网易云音乐的绝大多数数据

本文你会获得什么!

1、charles的使用。例如,charles在线调试别人网站js加载数据。

2、网易云音乐加密算法。

3、一些非常有用的python3爬虫基础。

4、最有价值的是:思路!(画重点)

产生爬虫需求的原因:

1、团队开发了资讯类的APP,产品属于新生儿阶段,无流量、无人气,无推广,要让自然下载的100个用户感觉到存在感。起码浏览量、点赞量、评论数看起来还可以!浏览量、点赞量都是数据库的数据,做一个随时间螺旋刷量的算法即可,可评论数就得自己1条条写了,so…

2、网易云音乐作为音乐类app鄙视链顶端的产品,有很多不错的音源。作为一个视频、图片、音乐素材收藏爱好者,还是有私心想免费收藏一些作品的。

思路

拿来主义横行!百度、CSDN、开源中国、github、segmentfault,翻个遍,爬虫的90%基本能搞定。已有很多巨人分享了足够多的肩膀。一个人的经验不行,多踩几个人,基本就能满意。

是否涉嫌抄袭,我是这么理解的。换变量,换个说法原理基本一样,那就是洗代码,抄袭。在源代码、原理基础上做延伸、扩充,有自己的应用场景,应该不算抄袭吧!

参考博文: https://whttps://www.imooc.com/article/36601ww.imooc.com/article/36601 https://blog.csdn.net/weixin_36605200/article/details/82318308 https://blog.csdn.net/zwt520123/article/details/80374952 https://segmentfault.com/a/1190000014948845

参考意思代码后,用chrome测试,总结思路: 网页版歌曲地址:https://music.163.com/#/song?id=32358712 评论post到服务器的地址:https://music.163.com/weapi/v1/resource/comments/R_SO_4_32358712?csrf_token= post出去的参数有2个:

  1. params: BQ6JTJgI4+UtU3u1YRFu1w2Liq7blmYUAP5juKKuNou6goJKHVGzte/H38TEUpvxQmb9ESKgUKjutZTg/ruX98T8AnyMGNqSp7seTJEb+WQDcgHkK05Yb8lPzKGYeyy+TYejZAcJzyo9r7jOHlnwwSREEmlMMBCrh0KJB8atsl9nwnBIOkTTrRDbrHfhvZbd
  2. encSecKey: 751a8a2d0f052e9da30816f3dfda417c9149d896b59d25bc0d6365c43a587ce55a92b272b89d91f6fe232c3685ebf5813565c862152a82502886301e4dc96830b0d49d772d3962f77c97ac17d874c4afbf0cfc711a9e09330b1bcd20be6cc54284266adde11a46166bf958606e33b41dff4ed81e75de7b18b3e1d45fc100e8f4

post到服务器的params和encSecKey加密算法:params是经过4个变量经过2次AES加密,encSecKey是params的RSA加密。参数中1个是变量,其他3个是常量。别问我为什么,大神们已经给出结果了。我们只要去发现参数中那个变量即可。 在此之前要通过大神的文章,搞清楚加密的过程!

验证的思路:

1、charles在线调试core.js代码。

(1)记得把chrome的Network中设置为Disable cache。

(2)下载core_开头的js文件,下载到本地,并用ide软件打开他。

(3)打开js文件,并格式文件。搜索window.asrsea,找到加密函数。有兴趣可以认真研究研究。在下面打入console.log();这个的作用是查找加密的4个量中唯一的变量。

(4)寄出charles,在tool中使用local map,并设置上参数。

charles的下载,破解,配置,ssl的设置就自行百度了吧!

(5)在chrome中刷新一下,进入Console中查看!

参数有好多,这个页面有音乐的,有评论的,还有一个没有研究。

点击第二页评论,又出来一些信息。 首页:{rid: "R_SO_4_32358712", offset: "0", total: "true", limit: "20", csrf_token: ""} 第二页:{rid: "R_SO_4_32358712", offset: "20", total: "false", limit: "20", csrf_token: ""}

爬虫编写

写爬虫前,先pip一些模块requests、json、pycrypto、pandas。

import requests, hashlib, base64, codecs, json, os, sys
from Crypto.Cipher import AES
import pandas as pd

加密过程,已经在上面写上了注释!

编写爬虫!最核心就是get_params这个变量,首页除外,每页评论数都是20个,总的评论数也在json中能找到,所以,有多少页评论,就得提交多少次请求!

开始爬取,爬取后简单清写!

这里因为每页都post一次,获得1个json数据,多页的话就是多个json,就用enumerate函数。这里我去掉了user的信息,比如user的nikename,头像地址等,实际应用中是需要的,简单修改就可以了!

可以不需要精彩评论的数据(hotComments),其实就是评论中likecount最多的降序排序!

hot_comment = json_df.sort_values(['likedCount'], ascending = False).head(12)

hot_comment

其他补充:

1、要抓取歌单中的评论: https://music.163.com/#/playlist?id=2430220144 post出去的需加密的参数为: {rid: "A_PL_0_2430220144", offset: "0", total: "true", limit: "20", csrf_token: ""}

2、抓取歌曲也是类似,只是post出去的需加密的参数为: {ids: "[26465171]", br: 128000, csrf_token: ""} [26465171]表示歌曲id的列表,br是品质:1280000,也可以320000 当然,这样操作也是有局限的。就是会员歌曲是无法下载的!

如果你喜欢,请把我推荐给身边需要的人吧! 商业级的不太方便。只是在这基础上用scrapy+多进程/多线程!

》》微信回复20181017,即可下载源码《《

如果你喜欢,请把我推荐给身边需要的人吧!

转载于:https://my.oschina.net/at5/blog/2248125

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值