Python自动化爬取b站实时弹幕并制作WordCloud词云

暂时领先,未必最先达到终点

在这里插入图片描述

终究,命运的齿轮开始转动了,从这一刻起

几日不见,甚是思念!小夜斗又回来啦!

这几日小夜斗一直在折腾于词云制作、力扣刷题、java学习、还有爬取微博评论数据的爬虫项目,一直没有功夫写博客,内心感到无比空虚,哈哈好啦,今天小夜斗给大家分享一期WordCloud词云制作

所需数据集: 停用词文本、b站弹幕数据文本

这两个数据小夜斗会在文末给大家分享的哈!

其中b站弹幕数据文本也可以自己动手去爬一下

参考文章: 爬取b站《守护解放西》弹幕

爬取守护解放西弹幕这一文章也算是一篇基础详细的爬虫入门吧!

好啦,前言介绍就这么多啦,下面让小夜斗给大家整活吧!

先导入需要利用到的库!

import jieba  # 分词
from wordcloud import WordCloud  # 词云
from PIL import Image  # 图片处理
import numpy as np  # 图片处理
import matplotlib.pyplot as plt  # 画图

一: jieba分词

所谓的分词就是将一句话分成一个或几个词语的形式,例如
在这里插入图片描述
小夜斗爬取冰冰vlog数据中,有一句老婆好美!通过jieba分词后

就会形成两个词语: “老婆”,“好美”! 小夜斗一双凉凉的手敲代码,

但心却是冰冰的!下面让我们来看分词代码吧!

# 读取停用词库,注意编码应为‘utf8’
f = open('小夜斗的停用词表.txt', encoding='utf8')
stopwords = f.read().split('\n')
print(stopwords)  # 打印停用词
f.close()  # 关闭停用词文件

在这里插入图片描述
如上图所示,打印出的为一个停用词列表

with open("冰冰vlog2.txt", "r", encoding='utf8') as fp:
	text = fp.read()        

这是一个读取冰冰弹幕数据文件的操作,将其保存到text变量中!

segs = jieba.cut(text)  # 进行jieba分词
mytext_list = []  # 构建一个容纳过滤掉停用词的冰冰弹幕数据文件
# 文本清洗
for seg in segs:  # 循环遍历每一个分词文本
	# 如果该词不属于停用词表 并且非空 长度不为1
	if seg not in stopwords and seg != "" and len(seg) != 1:
		# 将该词语添加到mytext_list列表中
		mytext_list.append(seg.replace(" ", ""))
print(mytext_list)  # 打印过滤后的冰冰弹幕数据

在这里插入图片描述

如上图所述,选取其中一小部分展示,上述操作的核心目的是:

jieba.cut(string) 精确模式:把文本精确的切分开,不存在冗余单词,适合做文本分析
jieba.cut(string,cut_all = True) 全模式:把文本中所有可能的词语都扫描出来,速度快,但有冗余。
jieba.cut_for_search(string) 搜索引擎模式:在精确模式基础上,对长词再次切分。

获取过滤停用词后的冰冰弹幕数据相当于处理脏数据一样

cloud_text = ",".join(mytext_list)  # 连接列表里面的词语
print(cloud_text) 

在这里插入图片描述
打印cloud_text的结果如上,这个数据是最终为词云服务的!

二: 制作WordCloud词云

  • 词云的目的: 将出现频率最高的哪些词汇展示出来!
  • 注意图片的选取要用色彩相差较大的,会发现整个矩形都堆满了词汇,而不是那种刚好出现人物形状的词云
  • 如果你制作的词云是整个矩阵铺满词语,不烦换一张图片试试
  • 这里小夜斗从csdn博主那搞来了一张冰冰的帅气照片!感觉这张图片制作图云的效果最nice了,图片上面的水印加的是kimi君的博客链接!
    在这里插入图片描述
plt.figure()  # 图形窗口
mask = plt.imread('冰冰冰.jpeg')  # 导入冰冰图形蒙版
wc = WordCloud(
            background_color="white",  # 背景颜色
            max_words=200,  # 显示最大次数
            font_path=r'C:/Windows/Fonts/STXINGKA.TTF',  # 字体
            width=400,  # 宽
            height=200,  # 高
            mask=mask,
            scale=10).generate(cloud_text)  # 迭代生成词云
wc.to_file("博客展示词云.png")
plt.imshow(wc, interpolation="bilinear")  # 插值为双线性,会使显示平滑更加平滑
plt.axis("off")  # 坐标轴隐藏
plt.show()
print("小夜斗立项成功!")

在这里插入图片描述

  • 上面是小夜斗自己做的几副词云,其中有人物图形的是博客中分享的那张照片,其余几张因为图片的问题导致要么显示不完全,要么是全铺满

  • 获取源码以及数据集,小夜斗公众号回复”004词云制作“即可!

在这里插入图片描述
好啦今天的分享就到这里啦,然后小夜斗就要滚去学习啦,see you!

  • 在这个星球上,你很重要,请珍惜你的珍贵! ~~~夜斗小神社
    在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/xtreallydance/article/details/113071324