转载自: CDA数据分析师

文章目录

  • 1、数据获取
  • 2、数据处理
  • 3、数据可视化

1、数据获取


https://y.qq.com/n/yqq/album/0009C3rp3Kfwg0.html#comment_box

评论区的内容是被封装在json中

复制此条json数据,放到在线json解析中

分析数据结构

comment_list = json_data['comment']['commentlist']


# 昵称
nick_name = [i.get('nick') for i in comment_list]
# 评论内容
content = [i.get('rootcommentcontent') for i in comment_list]
# 评论时间
comment_time = [i.get('time') for i in comment_list]
# 点赞数
praise_num = [i.get('praisenum') for i in comment_list]

整个代码

# 导入包
import pandas as pd
import time
import requests
import json
from fake_useragent import UserAgentdef get_qq_comment(page_num):# 存储数据df_all = pd.DataFrame()for i in range(page_num):# 打印进度print('我正在获取第{}页的信息'.format(i))# 获取URLurl = 'https://c.y.qq.com/base/fcgi-bin/fcg_global_comment_h5.fcg?g_tk_new_20200303=5381&g_tk=5381&loginUin=0&hostUin=0&format=json&inCharset=utf8&outCharset=GB2312&notice=0&platform=yqq.json&needNewCode=0&cid=205360772&reqtype=2&biztype=2&topid=12924001&cmd=8&needmusiccrit=0&pagenum={}&pagesize=25'.format(i)# 添加headersheaders = {'user-agent': UserAgent().random}# 发起请求try:r = requests.get(url, headers=headers)except Exception as e:print(e)continue# 解析网页json_data = json.loads(r.text)# 获取数据comment_list = json_data['comment']['commentlist']# 昵称nick_name = [i.get('nick') for i in comment_list]# 评论内容content = [i.get('rootcommentcontent') for i in comment_list]# 评论时间comment_time = [i.get('time') for i in comment_list]# 点赞数praise_num = [i.get('praisenum') for i in comment_list]# 存储数据df = pd.DataFrame({'nick_name': nick_name,'content': content,'comment_time': comment_time,'praise_num': praise_num})# 追加数据df_all = df_all.append(df, ignore_index=True)# 休眠一秒time.sleep(1)return df_all# 运行函数
df = get_qq_comment(page_num=5) df.to_excel('C:\\Users\\Administrator\\Desktop\\mojito.xlsx',index = False)

只要5页内容,试一下就行了

2、数据处理

读入数据

df = pd.read_excel('C:\\Users\\Administrator\\Desktop\\mojito.xlsx')

查看重复值和空值

print(df.duplicated().sum())  # 0
print(df.isnull().sum())
'''
nick_name       0
content         0
comment_time    0
praise_num      0
dtype: int64
'''
df.info

时间格式转换

df['comment_time']
# 原格式
'''
0      1592708649
1      1592708347
2      1592708274
3      1592708154
4      1592708011120    1592636465
121    1592636412
122    1592636120
123    1592636047
124    1592636017
Name: comment_time, Length: 125, dtype: int64
'''
def transform_time(time_second):time_array = time.localtime(time_second)otherStyleTime = time.strftime('%Y-%m-%d %H:%M:%S', time_array) return otherStyleTime# 时间数据处理
df['comment_time'] = df['comment_time'].apply(lambda x: transform_time(x))'''
0      2020-06-21 11:04:09
1      2020-06-21 10:59:07
2      2020-06-21 10:57:54
3      2020-06-21 10:55:54
4      2020-06-21 10:53:31120    2020-06-20 15:01:05
121    2020-06-20 15:00:12
122    2020-06-20 14:55:20
123    2020-06-20 14:54:07
124    2020-06-20 14:53:37
Name: comment_time, Length: 125, dtype: object
'''

content 评论内容初步处理(正则—表达式)

import re
pattern = re.compile(r'\[em\](.*?)\[/em\]')
df['content'] = df.content.str.replace(pattern, '')
df.head() 

按时间排序

comment_num = df.comment_time.str.split(':').str[0].value_counts().sort_index()
'''索引
年 - 月- 日 小时  这个时点评论人数
2020-06-20 14     3
2020-06-20 15    15
2020-06-20 16     6
2020-06-20 17    15
2020-06-20 18    11
2020-06-20 19    12
2020-06-20 20     4
2020-06-20 21    10
2020-06-20 22     5
2020-06-20 23    10
2020-06-21 00     9
2020-06-21 01     1
2020-06-21 02     3
2020-06-21 05     1
2020-06-21 06     1
2020-06-21 07     1
2020-06-21 08     3
2020-06-21 09     7
2020-06-21 10     7
2020-06-21 11     1
Name: comment_time, dtype: int64
'''

产生时间序列数据

# 去掉年份
x_line1 = [i.replace('2020-','') for i in comment_num.index.to_list()]
'''
['06-20 14','06-20 15','06-20 16','06-20 17','06-20 18',...
'''
# 这个时点评论人数
y_line1 = comment_num.values.tolist()
# [3, 15, 6, 15, 11, 12, 4, 10, 5, 10, 9, 1, 3, 1, 1, 1, 3, 7, 7, 1]

3、数据可视化

导入所需包

import jieba
import stylecloud
from pyecharts.charts import Pie, Bar, Map, Line, WordCloud, Page
from pyecharts import options as opts
from pyecharts.globals import SymbolType

Mojito评论人数走势图

c = (Line() #初始化.add_xaxis(x_line1) # X轴# Y轴.add_yaxis('',  # 系列名称y_line1,# 系列数据# 标记点配置项markpoint_opts=opts.MarkPointOpts(data=[opts.MarkPointItem(type_='max', name='最大值'),# 标记最大值opts.MarkPointItem(type_='min', name='最小值') # 标记最小值])) # 全局配置项.set_global_opts(# 标题设置title_opts=opts.TitleOpts('Mojito评论人数走势图'), # 轴标签设置xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate='30')), # 标签旋转 ) # 系统配置项.set_series_opts(# 标签配置项label_opts=opts.LabelOpts(is_show=False),  # 不显示标签# 线配置项linestyle_opts=opts.LineStyleOpts(width=3)) # 线宽3.render("line_base.html"))

QQ音乐评论词云图

stop_words.txt

def get_cut_words(content_series):# 读入停用词表stop_words = [] with open(r"C:\\Users\\Administrator\\Desktop\\stop_words.txt", 'r') as f:lines = f.readlines()for line in lines:stop_words.append(line.strip())# 添加关键词my_words = ['周杰伦', '一首歌', '好好听', '方文山', '30多岁']    for i in my_words:jieba.add_word(i) #     自定义停用词my_stop_words = ['歌有', '真的', '这首', '一首', '一点', '反正', '一段', '一句', '首歌', '啊啊啊', '哈哈哈', '转发', '微博', '那段', '他会']   stop_words.extend(my_stop_words)               # 分词content=';'.join([ str(c) for c in df['content'].tolist()])word_num = jieba.lcut(content)# 条件筛选word_num_selected = [i for i in word_num if i not in stop_words and len(i)>=2]return word_num_selectedtext1 = get_cut_words(content_series=df.content)stylecloud.gen_stylecloud(text=' '.join(text1), max_words=1000,collocations=False,font_path='C:\\Windows\\Fonts\\simhei.ttf',icon_name='fas fa-music',size=624,gradient='vertical' ,palette='cartocolors.diverging.TealRose_2',output_name='C:\\Users\\Administrator\\Desktop\\QQ音乐评论词云图.png')

Python爬取QQ音乐评论数据相关推荐

  1. python爬取qq音乐评论_爬虫:QQ音乐评论

    QQ音乐评论 有些小伙伴反馈,对于爬虫的完整流程,还是不清楚,这边就按顺序,给大家梳理一下 反爬 首先查看一下,我们要爬取的网页,是否反爬(各种侵害人家服务器的事情,我们不能干) QQ音乐网址:htt ...

  2. python爬取QQ音乐评论信息

    QQ音乐评论爬取分析 1.随便选个音乐 2. g_tk函数介绍 3. topid 4. python 代码 5. 结果 1.随便选个音乐 https://y.qq.com/n/yqq/song/003 ...

  3. python爬取qq音乐评论_教你用Python爬去QQ音乐评论

    有态度地学习 去年夏天,好像于我而言,重要的事就是毕业来临,从此踏上了搬砖之路,从学校到职场,之间身份的转变,让我又多了一份责任.当然还有一段感情经历,现在回头去看,只能说且行且珍惜,或许以后未必能再 ...

  4. python爬取qq音乐歌曲链接为什么播放不出来_手把手教你使用Python抓取QQ音乐数据(第一弹)...

    原标题:手把手教你使用Python抓取QQ音乐数据(第一弹) [一.项目目标] 获取 QQ 音乐指定歌手单曲排行指定页数的歌曲的歌名.专辑名.播放链接. 由浅入深,层层递进,非常适合刚入门的同学练手. ...

  5. python爬取QQ音乐免费歌曲 2020.7.26

    python爬取qq音乐免费歌曲 2020.7.26 目标分析 获取音乐列表 1.浏览器网络请求追踪 2.寻找音乐列表 解析qq音乐 1.下载连接组成 2.获取vkey 3.获取sign参数 关系图 ...

  6. python爬取qq音乐标签_Python爬取qq音乐的过程实例

    一.前言 qq music上的音乐还是不少的,有些时候想要下载好听的音乐,但有每次在网页下载都是烦人的登录什么的.于是,来了个qqmusic的爬虫.至少我觉得for循环爬虫,最核心的应该就是找到待爬元 ...

  7. python爬取qq音乐周杰伦_Python爬取QQ音乐url及批量下载

    QQ音乐还是有不少的好音乐,有些时候想要下载好听的音乐,如果在网页下载都是还需要登录什么的.于是,来了个QQmusic的爬虫.至少我觉得for循环爬虫,最核心的应该就是找到待爬元素所在url吧. 参考 ...

  8. python爬淘宝app数据_一篇文章教会你用Python爬取淘宝评论数据(写在记事本)

    [一.项目简介] 本文主要目标是采集淘宝的评价,找出客户所需要的功能.统计客户评价上面夸哪个功能多,比如防水,容量大,好看等等. [二.项目准备工作] 准备Pycharm,下载安装等,可以参考这篇文章 ...

  9. Python爬取QQ音乐url及批量下载

    QQ音乐还是有不少的好音乐,有些时候想要下载好听的音乐,如果在网页下载都是还需要登录什么的.于是,来了个QQmusic的爬虫.至少我觉得for循环爬虫,最核心的应该就是找到待爬元素所在url吧. 参考 ...

  10. Python爬取QQ音乐内地专辑

    好久没写博客,中间玩了两天基于python的web开发,然继续学爬虫了,花三天做了一个小练习,爬取qq音乐所有的内地专辑内容 用到的工具:Chrome.Pycharm社区版.Anaconda Pych ...

最新文章

  1. leetcode1. 两数之和--每天刷一道leetcode系列!
  2. python爬虫实战,requests模块,Python实现抓取头条街拍美图
  3. python 根据字典中值的大小对项进行排序
  4. OpenShift 4 - Fedora CoreOS (4) - 用 Ignition 定制 CoreOS 的网络/存储等配置
  5. Web 开发与设计师速查手册大全
  6. gridview選發行彈出層 模板列
  7. linux怎么安装Nginx
  8. 这几个截图文字识别软件可以自动识别文字
  9. 华为研发工程师编程题:汽水瓶 [python]
  10. 联想服务器如何u盘安装系统教程,u盘联想系统安装教程 联想如何启动u盘安装系统教程...
  11. clear linux
  12. wfa 认证 android 必须,我看到有个WFA行动学习促动师的认证,有谁了解这个认证的,介绍一下怎么可以通过认证,通过率高吗?...
  13. C# 二维码 和条形码生成
  14. 【论文汇总】人群计数中Transformer的应用,持续更新
  15. 计算机安全之网络安全议论文,网络安全800字议论文
  16. 聊一聊 MySQL 中的事务及其实现原理
  17. 伤疤好了有黑印怎么办_脸上疤掉了黑印怎么办 五种方法去除黑印
  18. bzoj3165 segment 超哥线段树
  19. 常见软件开发模型对比
  20. Cobar的使用与心得(持续更新)

热门文章

  1. 【Google Paper】对比学习用于解决推荐系统长尾问题
  2. 两个三维图像互信息python_含有两个数字的词语
  3. (360校招笔试题)病毒:判断由0或1组成数字的数量
  4. abap --MOVE-CORRESPONDING
  5. 只言片语 —— eFPGA
  6. matlab用我爱你绘制立体桃心,用MATLAB画心形图案
  7. 显示出现计算机代码,win10电脑出现蓝屏并提示代码DPC_WATCHDOG_VIOLATION如何解决
  8. 免费帝国CMS发布插件
  9. 巨坑:transport.TransportException:Cannot execute request on any known server
  10. 扩展坞可以把手机投到显示器吗_华为P20投屏助手,绿联USB-C扩展坞使用说明