python实战爬取网易云评论信息(代码片段)

乘凉者栽树人 乘凉者栽树人     2022-12-11     691

关键词:

8、实战项目:网易云音乐评价

8.1、获取评论的URL

  1. 一般我们从检查(F12调试器)、网页源代码,查询,至于框架源代码就是一个类似一个笔记本,有很好看的背景图,叫框架,而你去将他写上文字,贴纸修饰,他就组合成一个好看饱满的页面

  1. 假设,没有在网页源代码找到评论,通过F12调试器来判断评论位置

可以看到,此时我们找到了相应的评论的URL存放地址

8.2、分析步骤

  • 找到未加密前的参数

然后我们点击Initiator查看脚本执行文件

点击第一个脚本也就是最后才执行的脚本,可以看到各个代码模块的执行程序

我们此时需要知道参数params是否在(e7d)进来之前就加密了

  1. 设置断点,刷新页面

  2. 不难发现,此时的params已经是被加密过的参数了,因此我们进行下一步,点击Call Stack,寻找未加密前的参数

  1. 直到参数值改变,不再是加密状态,此时我们可以得知,就是在t7m.be7X被加密

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9AEjTLds-1623521116748)(C:\\Users\\空\\AppData\\Roaming\\Typora\\typora-user-images\\image-20210612184738911.png)]

  1. 返回t7m.be7X,再次断点操作

  2. 找到了加密前一步的信息

  1. 接下来的一步会将值封装成两个参数的形式储存并传递

  • 想办法把参数进行加密(参考网易的逻辑)
  1. 根据上面,我们就可以知道
  • params =>encText

  • encSecKey=>encSecKey

  • 加密方法:window.arsea(参数,xxx,xxx,xxx)

  1. 通过ctrl+f查找window.aresea可以发现到abcd的四种方式


3. 寻找abcd对应的参数


4. 将参数输出得到字符串

  1. 找到params和encSecKey
  • encSecKey
function d(d, e, f, g) 
    var h =  #创建一个空对象
      , i = a(16);  #i就是随机值
    return h.encText = b(d, g),
    h.encText = b(h.encText, i),  #返回的就是params
    h.encSecKey = c(i, e, f),   #得到的就是encSecKey,ef是固定值,只有i是随机的,也就是说我们要在网页找到这个随机,而独有网页独有的i,就可以获取该网页的信息
    h

  • params
def get_params():  #默认接收到的是字符串
    first=enc_params(data,g)
    second=enc_params(first,i)
    return second
  • 请求到网易,拿到评论信息
# 1.找到未加密前的参数
# 2.将参数进行加密分析
# 3.请求到网易,拿到评论
from Crypto.Cipher import AES   #AES加密算法库
from base64 import b64decode #字节处理
import requests #获取url地址
import json #将字典转化为字符串

url="https://music.163.com/weapi/comment/resource/comments/get?csrf_token="

data=
"csrf_token": "",
"cursor": "-1",
"offset": "0",
"orderType": "1",
"pageNo": "1",
"pageSize": "20",
"rid": "R_SO_4_1407358755",
"threadId": "R_SO_4_1407358755"


e="010001"
f="00e0b509f6259df8642dbc35662901477df22677ec152b5ff68ace615bb7b725152b3ab17a876aea8a5aa76d2e417629ec4ee341f56135fccf695280104e0312ecbda92557c93870114af6c9d05c4f7f0c3685b7a46bee255932575cce10b424d813cfe4875d3e82047b97ddef52741d546b8e289dc6935b3ece0462db0a22b8e7"
g="0CoJUm6Qyw8W8jud"
i="ceuDyzWkePGOKnuf" #i找到后,下面的encSecKey也是定值

def get_encSecKey():
    return "c2139810d3897ec98b2754e050b9553c242927855d1e399c05e27e33a912b2d4bce05d5d1b7d815f86740b8d03e02b3d1113d4d1dfa1e94e0db3c63d589ec755ed399581198a4e56520a304adb75ace8accb4d53a4ea029bfbb5c77429dc986deea782bbccaa0101ca971febd715f611b89cf500660bfac439f4b806ee50a77e"

def get_params(data):  #默认接收到的是字符串
    first=enc_params(data,g)
    second=enc_params(first,i)
    return second

def to_16(data):
    pad = 16 - len(data) % 16
    data += chr(pad) * pad
    return data

def enc_params(data,key): #加密过程
    iv="0102030405060708" #偏移量
    data=to_16(data)
    aes=AES.new(key=key.encode("UTF-8"),IV=iv.encode("UTF-8"),mode=AES.MODE_CBC)
    bs=aes.encrypt(data.encode("utf-8"))
    # return str(b64decode(bs))
    return str(b64decode(bs))


# 处理加密过程
# d:数据 efg都是定值

# 将加密的方法放进来
"""
function a(a=16)   #返回随机的16位字符串
        var d, e, b = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789", c = "";
        for (d = 0; a > d; d += 1)  #循环16次
            e = Math.random() * b.length,  #随机数 1.2345
            e = Math.floor(e),   #取整1
            c += b.charAt(e);   #去字符串中的xxx位置 b
        return c
    
    function b(a, b)   #a是要加密的内容
        var c = CryptoJS.enc.Utf8.parse(b) #c是密钥,b也是密钥
          , d = CryptoJS.enc.Utf8.parse("0102030405060708")
          , e = CryptoJS.enc.Utf8.parse(a) #e是数据
          , f = CryptoJS.AES.encrypt(e, c,  #AES加密算法 iv是偏移量 模式:cbc
            iv: d,
            mode: CryptoJS.mode.CBC
        );
        return f.toString()
    
    function c(a, b, c)  #c是不会产生随机数的
        var d, e;
        return setMaxDigits(131),
        d = new RSAKeyPair(b,"",c),
        e = encryptedString(d, a)
    
    function d(d, e, f, g) 
        var h =  #创建一个空对象
          , i = a(16);  #i就是随机值
        return h.encText = b(d, g),  #g也是密钥
        h.encText = b(h.encText, i),  #返回的就是params,i是密钥,可以发现,除了d,其他都是定值,而d就是上方的data
        h.encSecKey = c(i, e, f),   #得到的就是encSecKey,ef是固定值,只有i是随机的,也就是说我们要在网页找到这个随机,而独有网页独有的i,就可以获取该网页的信息
        return h
    
    #两次加密:数据+g=>b=>第一次加密+i=>b=params
"""

resp=requests.post(url,data=
    "params": get_params(json.dumps(data)),
    "encSecKey": get_encSecKey()
)

print(resp.text)

爬取网易云音乐评论并使用词云展示(代码片段)

...很喜欢的歌,许薇的《我以为》,评论也很有趣,遂有想爬取该歌曲下的所有评论并用词云工具展示。  我们使用chrome开发者工具,发现歌曲的评论都隐藏在以R_SO_4开头的XHR文件中接下来思路就很明确,拿到该文件,解析... 查看详情

python爬虫--类级别写法(代码片段)

类级别写法爬取糗事百科段子前文回顾python爬虫–爬取9某1看剧网电视剧python爬虫–爬取网易云音乐评论python爬虫–scrapy(再探)python爬虫–scrapy(初识)python爬虫–selenium模块文章目录前文回顾python爬虫--爬取9某... 查看详情

scrapy框架实战爬取网易严选-苹果12手机热评(代码片段)

Scrapy爬取网易严选-苹果手机热评1.前言2.Scrapy项目创建3.网页分析4.发送请求5.提取信息6.模拟翻页7.数据保存8.结果展示9.数据分析1.前言Iphone13出来了,但是Iphone12依然香啊!好不好,我们去网易严选看看便知~~紫色的太... 查看详情

简单的网易云音乐热门评论爬虫(代码片段)

...量,就是一个普通的AJAX数据爬虫,适合新手练习目标:爬取网易云音乐歌曲的热门评论分析:本次爬虫不难,思路是请求和获取数据,网易云音乐的评论是通过AJAX的方式进行加载的,打开chrome进行分析就很容易分析出来,唯一... 查看详情

网易云音乐评论爬虫:歌曲的全部评论

...乐歌曲的全部评论.加qq群813622576或vx;tanzhouyiwan免费领取Python学习资料一,首先分析数据的请求方式网易云音乐歌 查看详情

alpha冲刺(1/10)

...名:我头发呢队杰(组长)过去两天完成了哪些任务查阅Python爬取音源的资料,如Python3爬虫抓取网易云音乐热评实战Python爬取高品质QQ音乐(2)如何爬网易云音乐的评论数?发现其中最重要的就是获取加密的key,这可能和技术没有... 查看详情

selenium爬取网易云(代码片段)

fromseleniumimportwebdriverfromselenium.webdriverimportActionChainsfromselenium.webdriver.common.byimportByfromselenium.webdriver.support.uiimportWebDriverWaitfromselenium.webdriver.supportimportexpec 查看详情

爬取网易云音乐(包括歌词和评论)

#http://music.163.com/discover/playlist/?order=hot&cat=%E5%85%A8%E9%83%A8&limit=35&offset=35#http://music.163.com/discover/playlist/?order=hot&cat=%E5%85%A8%E9%83%A8&limit=35&o 查看详情

python爬虫最全总结(代码片段)

python爬虫–总结前文回顾python爬虫–类级别写法python爬虫–爬取9某1看剧网电视剧python爬虫–爬取网易云音乐评论python爬虫–scrapy(再探)python爬虫–scrapy(初识)python爬虫–selenium模块python爬虫–异步文章目录pyt... 查看详情

python爬虫最全总结(代码片段)

python爬虫–总结前文回顾python爬虫–类级别写法python爬虫–爬取9某1看剧网电视剧python爬虫–爬取网易云音乐评论python爬虫–scrapy(再探)python爬虫–scrapy(初识)python爬虫–selenium模块python爬虫–异步文章目录pyt... 查看详情

python爬虫实战,openpyxl模块学习,爬取房价信息并简单的数据分析(代码片段)

前言利用Python爬取房价信息并进行简单的数据分析Ok,让我们开始吧~~~开发工具Python版本:3.6.4相关模块:openpyxl模块;requests模块;bs4模块;pyecharts模块;以及一些python自带的模块。环境搭建安装Python并添加到环境变量,pip安装... 查看详情

爬取网易云听歌排行榜歌单制作云词(代码片段)

...信息了,下面我们就可以直接用代码实现了。思路:```a.先爬取歌曲列表,获取对应歌曲的信息,存放到数据库,以便后面使用b.通过歌曲的id,获取对应的歌词;c.读取歌词分析获取关键词d.选择自定义的背景图生成自己的词图需... 查看详情

熟人必看,python爬取某黄页公开信息,字体反爬实战(代码片段)

文章目录⛳️黄xx页字体反爬实战场景⛳️实战编码⛳️黄xx页字体反爬实战场景本次采集的目标站点为aHVhbmd5ZTg4.com,首页截图如下所示。在官网找到【黄x页】选项卡,然后得到如下界面,其中涉及的信息如下,随机找到一个公... 查看详情

python获取旅游景点信息及评论并作词云数据可视化(代码片段)

正所谓:有朋自远方来,不亦乐乎?有朋友来找我们玩,是一件很快乐的事情,那么我们要尽地主之谊,好好带朋友去玩耍!那么问题来了,什么时候去哪里玩最好呢,哪里玩的地方最多呢࿱... 查看详情

十三香吗?网易严选-苹果12商品评论数据可视化分析(代码片段)

苹果手机评论数据可视化分析1.爬取数据2.准备工作3.数据预处理4.词云可视化5.词频可视化5.1绘制柱状图5.2绘制饼图6.评分可视化6.1柱状图6.2环形图6.3折线图7.购机时间可视化7.1绘制柱状图7.2绘制环形图7.3绘制折线图8.内存大小可... 查看详情

python实战手把手有教你写爬虫爬虫练手:看看爱奇艺的评论都在干啥(爬虫+词云分析)(代码片段)

爬虫学习练练手:刚好最近在学习爬虫,了解了一些基本的知识,以任务为导向去学习一下,所以根据自己的爱好出发,先来爬取一个《青春有你2》的评论吧。(可能会有点繁杂,主要记录自己在想什么... 查看详情

使用python爬取app安卓应用商店评论并生成词云(代码片段)

目录华为应用商店评论爬虫1.分析网页2.编码酷传网词云1.词云生成流程:2.编码3.词云图华为应用商店评论爬虫这里以潮汐APP为例,华为应用商店地址:https://appgallery.huawei.com/app/C107638641.分析网页使用Chrome打开应用商... 查看详情

使用python爬取app安卓应用商店评论并生成词云(代码片段)

目录华为应用商店评论爬虫1.分析网页2.编码酷传网词云1.词云生成流程:2.编码3.词云图华为应用商店评论爬虫这里以潮汐APP为例,华为应用商店地址:https://appgallery.huawei.com/app/C107638641.分析网页使用Chrome打开应用商... 查看详情