爬虫小白在b站看的视频教程,爬取的是网易云音乐的歌曲热评。本文仅用于学习记录,不用作任何商业用途。本文最后附带源代码和运行效果图。

1.安装库

import requests
from Crypto.Cipher import AES
from base64 import b64encode
import json

这里有一个小坑,就是这个Crypto。如果电脑中的site-packages中已经带有crypto的话,先把它删除!然后我们再通过pip install pycryptodome来安装到Crypto

2.打开music.163.com,随便打开一首歌。按F12进入开发者模式,使用Network,勾选Preserve log,刷新,抓包。找到get?csrf_token?,点击搜集信息。

这里可以看到data中的paramsencSecKey已经进行了加密。

点击Preview,可以看到hotComment就在这里!所以我们需要找到原来的data并模拟加密过程,才能得到热评数据。

刷新页面,点开后面的initiator选项。

点击左下角的大括号。

在3516行这里设置断点。

刷新页面。这时我们需要观察右边的url是否为:

'https://music.163.com/weapi/comment/resource/comments/get?csrf_token='。

如果不是的话,就点击中间那个按钮,直到找到与上面这个相同的网址。

几次点击之后,我们就找到了这个网址。

观察data,不是我们原始的。

点击call stack。

根据经验,原始data应该在这个里面。点开它。

然后把call stack锁起来,查看scope。这里面有很多信息。

bWf1x就携带着加密后的数据。而i7b携带的就是未加密的原始数据。

我们需要将i1x的数据保存起来。

然后我们看window.asrsea这个函数,它后面带着4个参数。

i7b就是原始数据;后面三个数据我们可以在控制台中运行查看结果。

这几个参数结果都保留下来。

点击window.asrsea函数,然后我们看d这个函数。

在13182这里设置一个断点。然后点击蓝色按钮一下。

然后看右边的Scope,我们把i和encSecKey的结果保留下来。

看这里的encSecKey,是由c函数得到的。而i是由a(16)得到。

a(16)产生的是一个随机的16位字符串。

所以i是一个随机的16位字符串。一旦这个i确定下来,由于e和f是固定的,

所以得到encSecKey也是固定的。

这里的关系就是:随机得到一个i,然后运行c函数,就可以得到一个encSecKey;只要i不要,encSecKey就是不变的。

好了,现在我们就剩下最后一个encText需要获得了。它与b函数有关。

然后看到b函数,我们只需要把b函数用代码写出来就好了。

def to_16(d):pad = 16 - len(d) % 16d += chr(pad) * padreturn d
def enc_params(d, key):aes = AES.new(key=key.encode('utf-8'), IV=iv.encode('utf-8'), mode=AES.MODE_CBC)d = to_16(d)bs = aes.encrypt(d.encode('utf-8'))return str(b64encode(bs), 'utf-8')
def get_params(d): # 必须模拟加密过程first = enc_params(d, g)second = enc_params(first, i)return second

最后,我们将获得的encSecKey和get_params()函数放入到data中去。

通过requests.post(url, data)去请求响应,

通过.json()获取数据。

data = {'params': get_params(json.dumps(d)),'encSecKey': get_encSecKey()
}
response = requests.post(url, data=data)
json = response.json()
n = 0
for hotComment in json['data']['hotComments']:print(n, hotComment['content'])n += 1

最后将热评打印出来。可以看到和网页上的热评是一样的,爬取成功!

最后这里附上所有的源代码,只要点击运行即可输出这首歌的热评。

如果想要获取到其他歌曲热评的话,需要找到它对应的rid和threadId。这个我还没想到如何自动获取,大家可以在评论区留言讨论。

import requests
from Crypto.Cipher import AES
from base64 import b64encode
import jsonurl = 'https://music.163.com/weapi/comment/resource/comments/get?csrf_token='
d = {'csrf_token': "",'cursor': "-1",'offset': "0",'orderType': "1",'pageNo': "1",'pageSize': "20",'rid': "R_SO_4_118261",'threadId': "R_SO_4_118261"
} # 不同的歌曲需要更改d里面的rid和threadId.而rid等于threadId.
e = "010001"
f = "00e0b509f6259df8642dbc35662901477df22677ec152b5ff68ace615bb7b725152b3ab17a876aea8a5aa76d2e417629ec4ee341f56135fccf695280104e0312ecbda92557c93870114af6c9d05c4f7f0c3685b7a46bee255932575cce10b424d813cfe4875d3e82047b97ddef52741d546b8e289dc6935b3ece0462db0a22b8e7"
g = "0CoJUm6Qyw8W8jud"
i = "Jq1AsJXHNQhhp3Kr" # 随机(i决定了encSecKey; 固定了i也就固定了encSecKey)
encSecKey = "99b85187afa87a4a289fb1db9736254a2931121e22484ad238e659bb07117479eac65c5e6bfe6de6c4875478196b814ef5b4284330d7815f3a8c91b7533cc716d09af6232ba40ff9ad5592bb833eb870048b096af88f88d61de016351bcb4e3193a1791829485dcf5fb17d34f6abcfdaaa3e5c7eeff3d39ca50807dea90273c2" # 随机
iv = "0102030405060708"
def to_16(d):pad = 16 - len(d) % 16d += chr(pad) * padreturn d
def enc_params(d, key):aes = AES.new(key=key.encode('utf-8'), IV=iv.encode('utf-8'), mode=AES.MODE_CBC)d = to_16(d)bs = aes.encrypt(d.encode('utf-8'))return str(b64encode(bs), 'utf-8')
def get_params(d): # 必须模拟加密过程first = enc_params(d, g)second = enc_params(first, i)return second
def get_encSecKey():return encSecKey
data = {'params': get_params(json.dumps(d)),'encSecKey': get_encSecKey()
}
response = requests.post(url, data=data)
json = response.json()
n = 0
for hotComment in json['data']['hotComments']:print(n, hotComment['content'])n += 1

python爬虫-网易云音乐的歌曲热评相关推荐

  1. python爬虫网易云音乐评论最多的歌_使用Python爬一爬网易云音乐上那些评论火爆的歌曲...

    网易云音乐这款音乐APP本人比较喜欢,用户量也比较大,而网易云音乐之所以用户众多和它的歌曲评论功能密不可分,很多歌曲的评论非常有意思,其中也不乏很多感人的评论.但是,网易云音乐并没有提供热评排行榜和按 ...

  2. Python爬虫-网易云音乐自动化爬取下载

    文章目录 前言 爬取分析 完整代码 爬取效果 拓展代码 前言 上一篇简述了如何使用 Python 爬虫自动爬取CSDN博客排行榜数据并自动整理成Excel文件,这篇文章来看看如何自动化爬取网易云音乐的 ...

  3. python爬虫网易云音乐最热评论并分析_Python3实现爬虫抓取网易云音乐的热门评论分析(图)...

    这篇文章主要给大家介绍了关于Python3实战之爬虫抓取网易云音乐热评的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧. ...

  4. python爬虫网易云音乐评论最多的歌_Python网易云音乐评论爬虫,歌曲的全部评论...

    用过网易云音乐听歌的朋友都知道,网易云音乐每首歌曲后面都有很多评论,热门歌曲的评论更是接近百万或者是超过百万条.现在我就来分享一下如何爬取网易云音乐歌曲的全部评论,由于网易云音乐的评论都做了混淆加密处 ...

  5. python爬虫网易云音乐最热评论并分析_网易云音乐热门评论api分析

    网上有现成的例子我就扒过来了!! title: 网易云评论api分析 date: 2018-12-24 20:54:46 tags: [python] 网易云音乐是个好地方,里面各个都是人才,特别是评 ...

  6. python爬虫网易云音乐最热评论并分析_python爬虫入门 实战(三)---爬网易云音乐热门评论...

    网易云音乐 本篇涉及知识: 1.request第三方库的基本使用 2.json解析 本篇目标: 爬取指定一个歌单的所有歌曲的热门评论 (注:本篇爬取不直接解析html文本,而是直接分析获取评论的api ...

  7. python爬虫----网易云音乐歌曲爬取并存入Excel

    因为数据要存入Excel中,所以首要目标是找个办法将数据能够存入excel中 经过在网上一番搜索后,发现用python里的xlwt模块可以比较容易的解决 一.准备工作 1.安装xlwt模块: 可以看h ...

  8. python爬虫网易云音乐评论最多的歌_Python3实战之爬虫抓取网易云音乐的热门评论...

    前言 之前刚刚入门python爬虫,有大概半个月时间没有写python了,都快遗忘了.于是准备写个简单的爬虫练练手,我觉得网易云音乐最优特色的就是其精准的歌曲推荐和独具特色的用户评论,于是写了这个抓取 ...

  9. python爬虫网易云音乐许巍的漫步制作热门点赞柱状图云词

    喜欢许巍的一些歌曲,真实而洒脱,那就爬虫玩会.获取数据用到了requests,绘制柱状图时用到了pyecharts,制作云词用到了wordcloud. 打开网易云音乐,找到许巍的漫步,按F12,让后再 ...

最新文章

  1. ARM再次表态:不会向华为断供芯片技术
  2. php preg_replace 正则替换图片路径
  3. 理解JS中的this的指向
  4. ArcEngine 获取HDF文件中的子文件
  5. 抛弃PHP,WordPress.com以JavaScript重写
  6. 日期格式转换成时间戳格式php,php日期转时间戳,指定日期转换成时间戳
  7. 理查德·汉明和他的汉明码
  8. git 分支合并_批量删除GIT已合并到master的分支
  9. 大型企业网络系统传输负载测试及分析
  10. 一些前端常用工具的生命周期
  11. Futter基础第15篇: 实现类似闲鱼App底部导航凸起按钮
  12. Julia: 关于... (三个圆点)
  13. centos下修改mysql默认端口
  14. 最好用的 网络神偷V10.7
  15. 特征检测和特征提取算子
  16. 一套完整实用的IT规划方法论
  17. 点击劫持(clickjacking)
  18. kubernetes-准入控制器-13
  19. html点击控制盒子左右移动,JS实现盒子跟着鼠标移动及键盘方向键控制盒子移动效果示例...
  20. 关于icon的tabs-icons使用自定义png jpg图片

热门文章

  1. 派大星python代码,简单python代码类型有哪些?
  2. AI是一场革命,不要笑,我是认真的。
  3. (转)使用Vernam(维尔南/弗纳姆)算法实现文件加密解密[C#]
  4. 舞动DB2图书签售火爆 部分作者现身中关村图书大厦
  5. 世纪性难题:剪不断、理还乱的开发测试关系
  6. 玩转PYthon,用Python绘制全球疫情变化地图(好东西,值得一看~~~)
  7. 转] 动漫电影 剧集 (怕自己有一天不小心忘了,写下来记住)
  8. 申请了SSL数字证书如何进行域名验证?
  9. win7虚拟机上安装visual studio2017社区版的相关问题以及解决办法
  10. 眼界决定境界,你也可以