为什么python如此火爆_用Python来分析一波周董新曲《说好不哭》为何如此火爆!...

2023-11-07 20:30

本文主要是介绍为什么python如此火爆_用Python来分析一波周董新曲《说好不哭》为何如此火爆!...,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

291758a0ea83da4aa7709e549a61f372.png

9 月 16 日晚间,周董在朋友圈发布了最新单曲《说好不哭》

发布后,真的让一波人哭了

一群想抢鲜听的小伙伴直接泪奔

因为 QQ 音乐直接被搞崩了

没想到干翻 QQ 音乐的不是网易云音乐

也不是虾米音乐

而是周董!

周董成成功地凭一己之力干翻了 QQ 音乐

那么听过周董新歌后的小伙伴都是怎么评价的呢?

这里,我们获取了 QQ 音乐的近 20W 条评论数据进行分析

看看其中有哪些有趣的东西

一、数据获取

1、请求分析

在 QQ 网页版直接搜索『说好不哭』

很容易就能找到单曲页面

70e4e81e348f186aacd2e72b1efb11d2.png

说好不哭

拉到页面最下方

可以看到评论的分页查看按钮

44850b4a5d4219ed71558d6b0defc148.png

分页查看

按下 F12 点击第二页

在请求流中就可以看到对应的请求

91285f8880536a501f809eec738d4f66.png

评论请求

其中可以看到两个重要参数:pagenum 和 pagesize

将请求 copy 到 Postman 中进行测试

fa3799e142c583cf505f4d31c4db07eb.png

Postman测试

发现可以直接获取到数据

连 Header 都不需要添加

这里尝试对请求参数进行了精简

最终只需要如下几个参数即可

3e21bfa2de411a9f7aaf7406a58a5b2e.png

参数精简

从 Postman 中可以直接获取到对应的代码

import requests

url = "https://c.y.qq.com/base/fcgi-bin/fcg_global_comment_h5.fcg"

querystring = {"biztype":"1","topid":"237773700","cmd":"8","pagenum":"1","pagesize":"25"}

response = requests.request("GET", url, params=querystring)

print(response.text)

这里是单页评论的获取

所有评论的获取只需递增 pagenum 即可

2、数据解析

返回数据中有很多暂时不需要的字段

这里我们只取其中的用户名、评论时间、评论内容、点赞数

对应如下字段

{

"nick": "丨那壹刻永遠消失\"\"",

"praisenum": 1,

"rootcommentcontent": "越听越好听怎么回事!",

"time": 1568729836,

}

由于数据量较大 这里我们暂时将数据存放在 Excel 中

一来无须依赖外部数据库

二来可以使用 Excel 对数据进行二次处理

数据存储代码如下:

def file_do(list_info, file_name):

# 获取文件大小

if not os.path.exists(file_name):

wb = openpyxl.Workbook()

page = wb.active

page.title = 'jay'

page.append(['昵称','时间','点赞数','评论'])

else:

wb = openpyxl.load_workbook(file_name)

page = wb.active

for info in list_info:

try:

page.append(info)

except Exception:

print(info)

wb.save(filename=file_name)

二、数据可视化

1、各时段的评论数

首先我们对评论按小时区间进行汇总

由于时间粒度比较小,这里对时间粒度进行了一些处理

7069fdbc1fc4490a7472203c3afb2897.png

评价人数走势图

周董的新曲是在 9.16 号 23 点准时发布的

可以看出在发布后的一个小时内(23:00-24:00)

评论数量达到了高峰

占了总评论数的一半以上

另外看了一眼 9.16 23 点之前的评论也很有意思

c6956953ca5383f23d39d5ab6268f4f9.png

一种搬好小板凳嗑着瓜子坐等的既视感

2、大家都在说什么

词云生成的方法有很多

可以用代码生成

也可以用一些在线工具

这里我就使用了在线词云工具:wordart

后续可以给大家单独再普及一下

生成效果如下

b97012555a457f18efc59dc462d8dcf7.png

词云

周杰伦、杰伦字眼很明显

还有大量跑来『打卡』的

『好听』、『来了』、『哭了』、『爱了』

其中少不了的还有『青春』

另外『阿信』的出现估计给了很多人惊喜

3、大家都点赞了哪些评论

我们以点赞数对评论进行了排序

排名靠前的评论是如下一些

c216e47d8f5e75f522c6fdb62e2b581d.png

评论排名

另外,QQ 音乐官方也会放出精彩评论

4f308a571e3afd5c16837c956dd55a98.png

热心网友昀恺丶

841dc36536fe251f6b9a70593e725f56.png

凉城

292ea78e67a28472ca98317a66b7bda8.png

蜗牛..

对比下可以看出和我们获取到的数据是比较一致的

只不过官方并不是按点赞个数进行排名的

看得出来这些排名靠前的大都是在回忆青春

这些评论之所以能够得到大家的共鸣

也许他们的青春里都有一个周杰伦吧

三、附件

四、源码

1、评论爬取源码

import requests,json,time,uuid,os,openpyxl

import re

from openpyxl.cell.cell import ILLEGAL_CHARACTERS_RE

info_list = []

def get_comment_info():

global info_list

pagenum = 1

while(True):

print(pagenum)

url = "https://c.y.qq.com/base/fcgi-bin/fcg_global_comment_h5.fcg"

querystring = {"biztype":"1","topid":"237773700","cmd":"8","pagenum":pagenum,"pagesize":"25"}

response = requests.request("GET", url, params=querystring)

resp = json.loads(response.text)

commentlist = resp.get('comment').get('commentlist')

if not commentlist or len(commentlist) == 0:

return

for comment in commentlist:

info = []

one_name = comment.get('nick')

# 将 UNIX 时间戳转化为普通时间格式

if comment.get('time') < 1568735760:

return

time_local = time.localtime(comment.get('time'))

one_time = time.strftime("%Y-%m-%d %H:%M:%S", time_local)

one_praisenum = comment.get('praisenum')

one_comment = comment.get('rootcommentcontent')

ILLEGAL_CHARACTERS_RE.sub(r'', one_comment)

ILLEGAL_CHARACTERS_RE.sub(r'', one_name)

info = [one_name, one_time, one_praisenum, one_comment]

# print(info)

info_list.append(info)

pagenum += 1

# print(comment.get('nick'))

# print(comment.get('rootcommentcontent'))

# print(comment.get('time'))

# print(comment.get('praisenum'))

def file_do(file_name):

# 获取文件大小

if not os.path.exists(file_name):

wb = openpyxl.Workbook()

page = wb.active

page.title = 'jay'

page.append(['昵称','时间','点赞数','评论'])

else:

wb = openpyxl.load_workbook(file_name)

page = wb.active

for info in info_list:

try:

page.append(info)

except Exception:

print(info)

pass

continue

wb.save(filename=file_name)

if __name__ == "__main__":

file_name = str(uuid.uuid1()) + '.xlsx'

get_comment_info()

file_do(file_name)

print('data has saved in {}'.format(file_name))

2、生成HTML图表源码

# 导入Style类,用于定义样式风格

from pyecharts import Style

import json

# 导入Geo组件,用于生成柱状图

from pyecharts import Bar

# 导入Counter类,用于统计值出现的次数

from collections import Counter

import fileinput,re

# 设置全局主题风格

from pyecharts import configure

configure(global_theme='wonderland')

# 数据可视化

dates = []

comment_text = ""

def render():

global comment_text

with open('jay.csv', mode='r', encoding='utf-8') as f:

rows = f.readlines()

for row in rows[1:]:

if row.count(',') != 3:

continue

elements = row.split(',')

user = elements[0]

date = elements[1]

if '2019' not in date:

continue

like = elements[2]

comment = elements[3]

if '2019-09-14' in date:

dates.append('2019-09-14')

elif '2019-09-15' in date:

dates.append('2019-09-15')

elif '2019-09-16 0' in date or '2019-09-16 1' in date or '2019-09-16 20' in date or '2019-09-16 21' in date:

dates.append('2019-09-16 0-21')

elif '2019-09-18' in date:

continue

else:

dates.append(date)

comment_text += comment

with open("comment_text.txt","w", encoding='utf-8') as f:

f.write(comment_text)

date_data = Counter(dates).most_common()

# 按日期进行排序

date_data = sorted(date_data)

# print(data)

# 根据评分数据生成柱状图

bar = Bar('评价人数走势图', '数据来源:QQ音乐网页版',

title_pos='center', width=800, height=600)

attr, value = bar.cast(date_data)

bar.add('', attr, value, is_visualmap=False, visual_range=[0, 3500], visual_text_color='#fff', is_more_utils=True,

xaxis_interval=0, xaxis_rotate=30,is_label_show=True,xaxis_label_textsize=8, label_text_size=8)

bar.render(

'picture\评价人数走势图.html')

render()

最后,一起来听一下这首歌吧~

这篇关于为什么python如此火爆_用Python来分析一波周董新曲《说好不哭》为何如此火爆!...的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/366117

相关文章

python: 多模块(.py)中全局变量的导入

文章目录 global关键字可变类型和不可变类型数据的内存地址单模块(单个py文件)的全局变量示例总结 多模块(多个py文件)的全局变量from x import x导入全局变量示例 import x导入全局变量示例 总结 global关键字 global 的作用范围是模块(.py)级别: 当你在一个模块(文件)中使用 global 声明变量时,这个变量只在该模块的全局命名空

性能分析之MySQL索引实战案例

文章目录 一、前言二、准备三、MySQL索引优化四、MySQL 索引知识回顾五、总结 一、前言 在上一讲性能工具之 JProfiler 简单登录案例分析实战中已经发现SQL没有建立索引问题,本文将一起从代码层去分析为什么没有建立索引? 开源ERP项目地址:https://gitee.com/jishenghua/JSH_ERP 二、准备 打开IDEA找到登录请求资源路径位置

【Python编程】Linux创建虚拟环境并配置与notebook相连接

1.创建 使用 venv 创建虚拟环境。例如,在当前目录下创建一个名为 myenv 的虚拟环境: python3 -m venv myenv 2.激活 激活虚拟环境使其成为当前终端会话的活动环境。运行: source myenv/bin/activate 3.与notebook连接 在虚拟环境中,使用 pip 安装 Jupyter 和 ipykernel: pip instal

【机器学习】高斯过程的基本概念和应用领域以及在python中的实例

引言 高斯过程(Gaussian Process,简称GP)是一种概率模型,用于描述一组随机变量的联合概率分布,其中任何一个有限维度的子集都具有高斯分布 文章目录 引言一、高斯过程1.1 基本定义1.1.1 随机过程1.1.2 高斯分布 1.2 高斯过程的特性1.2.1 联合高斯性1.2.2 均值函数1.2.3 协方差函数(或核函数) 1.3 核函数1.4 高斯过程回归(Gauss

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学

nudepy,一个有趣的 Python 库!

更多资料获取 📚 个人网站:ipengtao.com 大家好,今天为大家分享一个有趣的 Python 库 - nudepy。 Github地址:https://github.com/hhatto/nude.py 在图像处理和计算机视觉应用中,检测图像中的不适当内容(例如裸露图像)是一个重要的任务。nudepy 是一个基于 Python 的库,专门用于检测图像中的不适当内容。该

SWAP作物生长模型安装教程、数据制备、敏感性分析、气候变化影响、R模型敏感性分析与贝叶斯优化、Fortran源代码分析、气候数据降尺度与变化影响分析

查看原文>>>全流程SWAP农业模型数据制备、敏感性分析及气候变化影响实践技术应用 SWAP模型是由荷兰瓦赫宁根大学开发的先进农作物模型,它综合考虑了土壤-水分-大气以及植被间的相互作用;是一种描述作物生长过程的一种机理性作物生长模型。它不但运用Richard方程,使其能够精确的模拟土壤中水分的运动,而且耦合了WOFOST作物模型使作物的生长描述更为科学。 本文让更多的科研人员和农业工作者

MOLE 2.5 分析分子通道和孔隙

软件介绍 生物大分子通道和孔隙在生物学中发挥着重要作用,例如在分子识别和酶底物特异性方面。 我们介绍了一种名为 MOLE 2.5 的高级软件工具,该工具旨在分析分子通道和孔隙。 与其他可用软件工具的基准测试表明,MOLE 2.5 相比更快、更强大、功能更丰富。作为一项新功能,MOLE 2.5 可以估算已识别通道的物理化学性质。 软件下载 https://pan.quark.cn/s/57

pip-tools:打造可重复、可控的 Python 开发环境,解决依赖关系,让代码更稳定

在 Python 开发中,管理依赖关系是一项繁琐且容易出错的任务。手动更新依赖版本、处理冲突、确保一致性等等,都可能让开发者感到头疼。而 pip-tools 为开发者提供了一套稳定可靠的解决方案。 什么是 pip-tools? pip-tools 是一组命令行工具,旨在简化 Python 依赖关系的管理,确保项目环境的稳定性和可重复性。它主要包含两个核心工具:pip-compile 和 pip

衡石分析平台使用手册-单机安装及启动

单机安装及启动​ 本文讲述如何在单机环境下进行 HENGSHI SENSE 安装的操作过程。 在安装前请确认网络环境,如果是隔离环境,无法连接互联网时,请先按照 离线环境安装依赖的指导进行依赖包的安装,然后按照本文的指导继续操作。如果网络环境可以连接互联网,请直接按照本文的指导进行安装。 准备工作​ 请参考安装环境文档准备安装环境。 配置用户与安装目录。 在操作前请检查您是否有 sud