Loading [MathJax]/jax/input/TeX/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >【爬虫+数据清洗+可视化分析】舆情分析"淄博烧烤"的B站评论

【爬虫+数据清洗+可视化分析】舆情分析"淄博烧烤"的B站评论

原创
作者头像
马哥python说
修改于 2024-07-09 00:38:56
修改于 2024-07-09 00:38:56
55600
代码可运行
举报
运行总次数:0
代码可运行

一、背景介绍

我是@马哥python说 ,一枚10年程序猿。

自从2023.3月以来,"淄博烧烤"现象持续占领热搜流量,体现了后疫情时代众多网友对人间烟火气的美好向往,本现象级事件存在一定的数据分析实践意义。

我用Python爬取并分析了B站众多网友的评论,并得出一系列分析结论。

二、爬虫代码

2.1 展示爬取结果

首先,看下部分爬取数据:

爬取结果
爬取结果

爬取字段含:视频链接、评论页码、评论作者、评论时间、IP属地、点赞数、评论内容

2.2 爬虫代码讲解

导入需要用到的库:

代码语言:python
代码运行次数:0
运行
AI代码解释
复制
import requests  # 发送请求
import pandas as pd  # 保存csv文件
import os  # 判断文件是否存在
import time
from time import sleep  # 设置等待,防止反爬
import random  # 生成随机数

定义一个请求头:

代码语言:python
代码运行次数:0
运行
AI代码解释
复制
# 请求头
headers = {
    'authority': 'api.bilibili.com',
    'accept': 'application/json, text/plain, */*',
    'accept-language': 'zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6',
    # 需定期更换cookie,否则location爬不到
    'cookie': "需换成自己的cookie值",
    'origin': 'https://www.bilibili.com',
    'referer': 'https://www.bilibili.com/video/BV1FG4y1Z7po/?spm_id_from=333.337.search-card.all.click&vd_source=69a50ad969074af9e79ad13b34b1a548',
    'sec-ch-ua': '"Chromium";v="106", "Microsoft Edge";v="106", "Not;A=Brand";v="99"',
    'sec-ch-ua-mobile': '?0',
    'sec-ch-ua-platform': '"Windows"',
    'sec-fetch-dest': 'empty',
    'sec-fetch-mode': 'cors',
    'sec-fetch-site': 'same-site',
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36 Edg/106.0.1370.47'
}

请求头中的cookie是个很关键的参数,如果不设置cookie,会导致数据残缺或无法爬取到数据。

那么cookie如何获取呢?打开开发者模式,见下图:

获取cookie方式
获取cookie方式

由于评论时间是个十位数:

ctime
ctime

所以开发一个函数用于转换时间格式:

代码语言:python
代码运行次数:0
运行
AI代码解释
复制
def trans_date(v_timestamp):
    """10位时间戳转换为时间字符串"""
    timeArray = time.localtime(v_timestamp)
    otherStyleTime = time.strftime("%Y-%m-%d %H:%M:%S", timeArray)
    return otherStyleTime

向B站发送请求:

代码语言:python
代码运行次数:0
运行
AI代码解释
复制
response = requests.get(url, headers=headers, )  # 发送请求

接收到返回数据了,怎么解析数据呢?看一下json数据结构:

json返回数据
json返回数据

0-19个评论,都存放在replies下面,replies又在data下面,所以,这样解析数据:

代码语言:python
代码运行次数:0
运行
AI代码解释
复制
data_list = response.json()['data']['replies']  # 解析评论数据

这样,data_list里面就是存储的每条评论数据了。

接下来吗,就是解析出每条评论里的各个字段了。

我们以评论内容这个字段为例:

代码语言:python
代码运行次数:0
运行
AI代码解释
复制
comment_list = []  # 评论内容空列表
# 循环爬取每一条评论数据
for a in data_list:
    # 评论内容
    comment = a['content']['message']
    comment_list.append(comment)

其他字段同理,不再赘述。

最后,把这些列表数据保存到DataFrame里面,再to_csv保存到csv文件,持久化存储完成:

代码语言:python
代码运行次数:0
运行
AI代码解释
复制
# 把列表拼装为DataFrame数据
df = pd.DataFrame({
    '视频链接': 'https://www.bilibili.com/video/' + v_bid,
    '评论页码': (i + 1),
    '评论作者': user_list,
    '评论时间': time_list,
    'IP属地': location_list,
    '点赞数': like_list,
    '评论内容': comment_list,
})
# 把评论数据保存到csv文件
df.to_csv(outfile, mode='a+', encoding='utf_8_sig', index=False, header=header)

注意,加上encoding='utf_8_sig',否则可能会产生乱码问题!

下面,是主函数循环爬取部分代码:(支持多个视频的循环爬取)

代码语言:python
代码运行次数:0
运行
AI代码解释
复制
# 随便找了几个"淄博烧烤"相关的视频ID
bid_list = ['BV1dT411p7Kd', 'BV1Ak4y1n7Zb', 'BV1BX4y1m7jP']
# 评论最大爬取页(每页20条评论)
max_page = 30
# 循环爬取这几个视频的评论
for bid in bid_list:
    # 输出文件名
    outfile = 'b站评论_{}.csv'.format(now)
    # 转换aid
    aid = bv2av(bid=bid)
    # 爬取评论
    get_comment(v_aid=aid, v_bid=bid)

三、可视化代码

为了方便看效果,以下代码采用jupyter notebook进行演示。

3.1 读取数据

用read_csv读取刚才爬取的B站评论数据:

读取数据
读取数据

查看前3行及数据形状:

查看数据
查看数据

3.2 数据清洗

处理空值及重复值:

数据清洗
数据清洗

3.3 可视化

3.3.1 IP属地分析-柱形图

柱形图
柱形图

结论:从柱形图来看,山东位居首位,说明淄博烧烤也受到本地人大力支持,其次是四川、广东等地讨论热度最高。

3.3.2 评论时间分析-折线图

折线图
折线图

结论:从折线图来看,4月26日左右达到讨论热度顶峰,其次是5月1号即五一劳动节假期第一天,大量网友的"进淄赶烤"也制造了新的讨论热度。

3.3.3 点赞数分布-箱线图

由于点赞数大部分为0或个位数情况,个别点赞数到达成千上万,箱线图展示效果不佳,因此,仅提取点赞数<10的数据绘制箱线图。

箱线图
箱线图

结论:从箱线图来看,去除超过10个点赞数评论数据之后,大部分评论集中在0-3个点赞之间,也就是只有少量评论引起网友的点赞共鸣和认可。

3.3.4 评论内容-情感分布饼图

针对中文评论数据,采用snownlp开发情感判定函数:

情感判定
情感判定

情感分布饼图,如下:

饼图
饼图

结论:从饼图来看,积极和消极分别占比不到一半,说明广大网友在认可淄博烧烤现象的同时,也有大量负面讨论存在,比如讨论烧烤的价格略高、住宿条件欠佳、环境污染等负面话题。

3.3.5 评论内容-词云图

由于评论内容中存在很多"啊"、"的"、"了"等无意义的干扰词,影响高频词的提取,因此,采用哈工大停用词表作为停用词词典,对干扰词进行屏蔽:

停用词
停用词

然后,绘制词云图:

词云图
词云图

结论:从词云图来看,"淄博"、"烧烤"、"山东"、"好吃"、"城市"、"好"、"物价"等正面词汇字体较大,体现出众多网友对以「淄博烧烤」为代表的后疫情时代人间烟火的美好向往。

四、技术总结

淄博烧烤」案例完整开发流程:

  1. requests爬虫
  2. json解析
  3. pandas保存csv
  4. pandas数据清洗
  5. snownlp情感分析
  6. matplotlib可视化,含: 1)IP属地分析-柱形图Bar 2)评论时间分析-折线图Line 3)点赞数分布-箱线图Boxplot 4)评论内容-情感分布饼图Pie 5)评论内容-词云图WordCloud

五、演示视频

代码演示视频:https://cloud.tencent.com/developer/video/80111

六、关于我

我是 @马哥python说 ,持续分享python源码干货中!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
作者已关闭评论
暂无评论
推荐阅读
编辑精选文章
换一批
【爬虫+数据清洗+可视化】“淄博烧烤”热评Python舆情分析大屏
自从2023.3月以来,"淄博烧烤"现象持续占领热搜流量,体现了后疫情时代众多网友对人间烟火气的美好向往,本现象级事件存在一定的数据分析实践意义。
马哥python说
2024/04/06
6080
【爬虫+数据清洗+可视化】“淄博烧烤”热评Python舆情分析大屏
Python爬虫实战:爬取B站Top100视频,分析弹幕、播放量和分类并数据可视化
最近挺好奇的,B站每天Top100,具体什么视频最多,播放量和视频的弹幕数有没有比例关系。
Mintimate
2022/02/15
5.8K2
Python爬虫实战:爬取B站Top100视频,分析弹幕、播放量和分类并数据可视化
最新的B站弹幕和评论爬虫,你们要的冰冰来啦!
最近想爬下B站的弹幕和评论,发现网上找到的教程基本都失效了,毕竟爬虫和反爬是属于魔高一尺、道高一丈的双方,程序员小哥哥们在网络的两端斗智斗勇,也是精彩纷呈。
周萝卜
2021/10/13
8610
Python爬虫,最新的B站弹幕和评论爬虫,你们要的冰冰来啦!
最近想爬下B站的弹幕和评论,发现网上找到的教程基本都失效了,毕竟爬虫和反爬是属于魔高一尺、道高一丈的双方,程序员小哥哥们在网络的两端斗智斗勇,也是精彩纷呈。
周萝卜
2022/12/27
7160
Python爬虫,最新的B站弹幕和评论爬虫,你们要的冰冰来啦!
任意关键词(如淄博烧烤)微博数据抓取及可视化
利用在上一期【推送】中微博关键词爬虫,爬取了超过 4000 条微博数据,每条数据 18 个字段,这一期,我们来看看对这份数据的数据分析。包含常规可视化和复杂网络建模两部分,也许值得一个收藏、转发。
月小水长
2023/07/03
6580
任意关键词(如淄博烧烤)微博数据抓取及可视化
B站弹幕爬虫
B站作为弹幕文化的代表,有着非常丰富的弹幕资源。今天我们尝试对B站的弹幕进行爬虫并且绘制词云图展示爬虫结果。
数据森麟
2020/02/20
1.4K0
B站弹幕爬虫
用Python爬取了《扫黑风暴》数据,并将其可视化分析后,终于知道它为什么这么火了~
本期是对腾讯热播剧——扫黑风暴的一次爬虫与数据分析,耗时两个小时,总爬取条数3W条评论,总体来说比较普通,值得注意的一点是评论的情绪文本分析处理,这是第一次接触的知识。
用户8949263
2022/04/08
5460
用Python爬取了《扫黑风暴》数据,并将其可视化分析后,终于知道它为什么这么火了~
源代码和工具 | 2023 bilibili 视频评论爬虫,单条视频最多可爬取 10000 条评论
我帮一些没玩过 b 站的朋友问了 ChatGPT,b 站是什么,它是这么回答我的。
月小水长
2023/08/17
3.3K5
源代码和工具 | 2023 bilibili 视频评论爬虫,单条视频最多可爬取 10000 条评论
Python告诉你:从《入海》到《消愁》毛不易的歌里都在唱些什么?
【导语】:今天我们来聊聊——B站联合毛不易发布的毕业季主题曲《入海》,以及背后不一样的毛不易。Python技术部分请看第三部分。公众号后台,回复关键字“入海”获取完整数据。
CDA数据分析师
2020/05/26
6200
Python告诉你:从《入海》到《消愁》毛不易的歌里都在唱些什么?
源代码和软件 | 采集 1w+ B 站视频评论(年底更新版)
转眼又到年关,不知不觉距离 2023 bilibili 视频评论爬虫 发布已经过去 6 个月了,当时一并分享了 python 3 源代码和 windows 打包软件,收到了不少反馈。
月小水长
2023/12/30
7321
源代码和软件 | 采集 1w+ B 站视频评论(年底更新版)
某坤学学吴亦凡,Python可视化分析「大碗宽面」b站弹幕和网易云音乐评论
上周五也就是 4 月 19 号吴亦凡官方发布了一首歌:大碗宽面,这首歌的官方版 MV 也同步发布在 b 站上了,初听感觉这首歌和普通歌也没什么区别,其实这首歌是吴亦凡对自己的一种自黑的梗。原梗是两年前的一个综艺节目上,吴亦凡表演了即兴的freestyle,我们先来看看原梗的视频。
小小詹同学
2019/05/07
6950
某坤学学吴亦凡,Python可视化分析「大碗宽面」b站弹幕和网易云音乐评论
舆情监测分析系统_舆情监测系统
  我们的舆情分析系统主要包括舆情总缆分析、舆情搜索、文章分析、文章评论分析、事件舆情分析、事件舆情预警六大功能模块以及管理员系统配置模块。针对舆情总览分析、舆情搜索、文章分析、文章评论分析、事件舆情分析、事件舆情预警我们的分析数据来源于多个网站关于某一事件的报道文章的爬取,如微博、今日头条、知乎等,但主要集中于微博。管理员配置模块配置的是爬虫的爬虫间隔、舆情事件的展示参数以及系统日志查看。
全栈程序员站长
2022/09/29
4.8K0
舆情监测分析系统_舆情监测系统
用Python爬取了《雪中悍刀行》数据,并将其可视化分析后,终于知道它为什么这么火了~
本期是对腾讯热播剧——雪中悍刀行的一次爬虫与数据分析,耗时一个小时,总爬取条数1W条评论,很适合新人练手,值得注意的一点是评论的情绪文本分析处理,这是第一次接触的知识。
陈晨135
2022/01/04
6880
用Python爬取了《雪中悍刀行》数据,并将其可视化分析后,终于知道它为什么这么火了~
Python爬虫 爬取B站视频弹幕 + 绘制词云
视频链接:https://www.bilibili.com/video/BV1zE411Y7JY
叶庭云
2020/09/17
3.5K0
Python爬虫    爬取B站视频弹幕 + 绘制词云
微博评论在线分析可视化上线
目前公众号平台改变了推送机制,点“赞”、点“在看”、添加过“星标”的同学,都会优先接收到我的文章推送,所以大家读完文章后,记得点一下“在看”和“赞”。
月小水长
2023/01/30
8780
如何用Python对某娅偷逃税进行微博舆情分析~
前几天某娅因偷逃税被罚了13.41亿元,此消息一出,可是在网上激起了千层浪,网友们直接炸锅了。都在感慨,这辈子挣的钱不知道有没有人家交的罚款的零头多。
陈晨135
2021/12/25
8960
如何用Python对某娅偷逃税进行微博舆情分析~
基于LDA和baidu-aip的舆情分析项目
本文主要分为数据获取(微博爬虫)、文本分析(主题抽取、情感计算)。项目场景:以微博为数据源,分析新冠疫苗舆情的主题演化和情感波动趋势,结合时事进行验证,从而得出特殊事件对于舆情的特定影响,为突发公共事件的社交媒体舆情合理引导提供建议。
润森
2022/09/22
1.7K0
基于LDA和baidu-aip的舆情分析项目
实战 | 用Python爬取《云南虫谷》3.6万条评论,并做数据统计可视化展示分析,好看!
最近鬼吹灯系列网剧《云南虫谷》上线,作为鬼吹灯系列作品,承接上部《龙岭迷窟》内容,且还是铁三角原班人马主演,网友直呼非常好看!
可以叫我才哥
2021/09/24
1.3K0
你认可《后浪》吗
前几天 B 站上线了一个小视频《后浪》,在全网引起了热烈反响,有赞扬也有批评,视频地址:https://www.bilibili.com/video/BV1FV411d7u7,本文我们爬一下视频弹幕来了解一下 B 站网友对视频的看法。
Python小二
2020/08/18
3600
你认可《后浪》吗
【爬虫软件】2024研发:抖音评论区采集,包含二级评论!
众所周知,抖音是国内最火热的短视频社交平台,拥有上亿日活和海量用户,视频下方的评论区数据也是文本挖掘的重要目标,对于掌握热点方向、洞察用户心理、抓取目标数据大有帮助。
马哥小迷弟132
2024/06/27
1.2K0
【爬虫软件】2024研发:抖音评论区采集,包含二级评论!
推荐阅读
【爬虫+数据清洗+可视化】“淄博烧烤”热评Python舆情分析大屏
6080
Python爬虫实战:爬取B站Top100视频,分析弹幕、播放量和分类并数据可视化
5.8K2
最新的B站弹幕和评论爬虫,你们要的冰冰来啦!
8610
Python爬虫,最新的B站弹幕和评论爬虫,你们要的冰冰来啦!
7160
任意关键词(如淄博烧烤)微博数据抓取及可视化
6580
B站弹幕爬虫
1.4K0
用Python爬取了《扫黑风暴》数据,并将其可视化分析后,终于知道它为什么这么火了~
5460
源代码和工具 | 2023 bilibili 视频评论爬虫,单条视频最多可爬取 10000 条评论
3.3K5
Python告诉你:从《入海》到《消愁》毛不易的歌里都在唱些什么?
6200
源代码和软件 | 采集 1w+ B 站视频评论(年底更新版)
7321
某坤学学吴亦凡,Python可视化分析「大碗宽面」b站弹幕和网易云音乐评论
6950
舆情监测分析系统_舆情监测系统
4.8K0
用Python爬取了《雪中悍刀行》数据,并将其可视化分析后,终于知道它为什么这么火了~
6880
Python爬虫 爬取B站视频弹幕 + 绘制词云
3.5K0
微博评论在线分析可视化上线
8780
如何用Python对某娅偷逃税进行微博舆情分析~
8960
基于LDA和baidu-aip的舆情分析项目
1.7K0
实战 | 用Python爬取《云南虫谷》3.6万条评论,并做数据统计可视化展示分析,好看!
1.3K0
你认可《后浪》吗
3600
【爬虫软件】2024研发:抖音评论区采集,包含二级评论!
1.2K0
相关推荐
【爬虫+数据清洗+可视化】“淄博烧烤”热评Python舆情分析大屏
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档