Fork me on GitHub

昨天看球时,球迷都说了啥——弹幕抓取与分析

这是崔斯特的第八篇原创文章


数据来源:http://star.longzhu.com/teamchina

本次弹幕记录(开始时间: 2017-03-23-19:43:34,结束21:29:33),共记录20788条数据。

使用OBS弹幕助手记录http://www.obsapp.com/apps/obsdanmu/

1、分析

文件中含有时间记录,观众ID和送礼记录,其次是弹幕内容,所以决定对前两列内容不分析。

首先需要对文本分词,这里采用jieba分词 https://github.com/fxsjy/jieba/

去除空格,使用strip()函数, 去掉换行符”\n”

line = line.strip('\n')

把分析结果写入新的文档’text.txt’,Python join() 方法用于将序列中的元素以指定的字符连接生成一个新的字符串

text = ''
with open('danmu.txt',encoding='utf-8') as fin:
    for line in fin.readlines():
         line = line.strip('\n')
         text += '/'.join(jieba.cut(line))
         text += ' '
fout = open('text.txt','wb')#以二进制写模式写入
pickle.dump(text,fout)
fout.close()

这样就完成了分词过程,结果如下:

2、绘制图云

# 直接从文件读取数据
fr = open('text.txt','rb')
text = pickle.load(fr)

使用word_cloud,具体用法https://github.com/amueller/word_cloud

backgroud_Image = plt.imread('girl.jpg')
wc = WordCloud( background_color = 'white',    # 设置背景颜色
                mask = backgroud_Image,        # 设置背景图片
                max_words = 2000,            # 设置最大现实的字数
                stopwords = STOPWORDS,        # 设置停用词
                font_path = 'C:/Users/Windows/fonts/msyh.ttf',# 设置字体格式,如不设置显示不了中文
                max_font_size = 300,            # 设置字体最大值
                random_state = 50,            # 设置有多少种随机生成状态,即有多少种配色方案
                )

使用matplotlib绘图http://matplotlib.org/2.0.0/index.html

wc.generate(text)
image_colors = ImageColorGenerator(backgroud_Image)
#wc.recolor(color_func = image_colors)
plt.imshow(wc)
plt.axis('off')
plt.show()

OK,这样就完成了,附上结果


有没有你发过的弹幕呢?

可自形修改数据,得到更好看图片。

能力有限,分析很少,如果你想进行更深入分析,请找我要文件。

对英雄联盟感兴趣的小伙伴可以看看这篇,对游戏直播弹幕的分析。

https://zhangslob.github.io/2017/03/24/%E5%88%A9%E7%94%A8Python%E5%AF%B9%E7%9B%B4%E6%92%AD%E5%BC%B9%E5%B9%95%E7%9A%84%E5%88%86%E6%9E%90/

github:https://github.com/zhangslob/DanmuFenxi