3

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

 3 years ago
source link: https://blog.csdn.net/xtreallydance/article/details/113071324
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

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

在这里插入图片描述

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

这几日小夜斗一直在折腾于词云制作、力扣刷题、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!

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

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK