通过bilibili_api获取bilibili弹幕+绘制词云的方法!

由于自己学艺不精,后续词云的简略代码没怎么看懂,梳理了一遍把整个的学习内容记录下来。主要参考的为bilibili_api的教程和词云的生成教程(https://blog.csdn.net/itanders/article/details/88858415)

自己的环境:python3.7;pycharm编译器
一、bilibili_api获取弹幕
这部分代码如下:

#爬取bilibili弹幕
from bilibili_api import  Verify
from bilibili_api.video import VideoInfo
from bilibili_api.video import Danmaku
verify = Verify(sessdata="自己的sessdata",csrf="bili_jct")
video_info = VideoInfo(bvid="BV1JE411g7XF",verify=verify)
f = open(r'D:\学习\LMY_pythonlearn\bilibili.txt','a')
danmu = video_info.get_danmaku()
for i in danmu:
    f.write(i.text)
f.close()
1234567891011
通过bilibili_api获取bilibili弹幕+绘制词云的方法!

首先要给verify指定的登录信息:sessdata和csrf,在b站登录帐号后,chrome获取sessdata途径如下:
点击地址栏的小锁头

通过bilibili_api获取bilibili弹幕+绘制词云的方法!通过bilibili_api获取bilibili弹幕+绘制词云的方法!

 


打开coockie

通过bilibili_api获取bilibili弹幕+绘制词云的方法!通过bilibili_api获取bilibili弹幕+绘制词云的方法!

 


打开bilibili的cookie 找到sessdata,复制即可。

通过bilibili_api获取bilibili弹幕+绘制词云的方法!通过bilibili_api获取bilibili弹幕+绘制词云的方法!

 


csrf我没找到,直接用的文章里给的值:bili_jct
最后将爬取的弹幕存到txt文档里面:

通过bilibili_api获取bilibili弹幕+绘制词云的方法!通过bilibili_api获取bilibili弹幕+绘制词云的方法!

 


弹幕获取完成。
二、绘制词云
利用了jieba进行分词,然后用wordcloud绘制词云,matplot可视化。代码如下:

import jieba
import  numpy as np
from  pathlib import Path
from PIL import  Image
from wordcloud import  WordCloud,ImageColorGenerator
from matplotlib import pyplot as plt

def split_text(text):
    #用于jieba分词
    word_list = ' '.join(jieba.cut(text))
    return  word_list

def draw_wordcloud(text,image_mask):
#以给定图片为轮廓显示词云
    alice_mask = np.array(Image.open(image_mask))
    wc = WordCloud(background_color="white", max_words=20, mask=alice_mask, contour_width=3,font_path = 'D:/学习/LMY_pythonlearn/msyh.ttf')
    wc.generate(text)
    image_Colors = ImageColorGenerator(alice_mask)
    plt.figure(figsize=(14,8))
    # 创建词云图
    plt.imshow(wc.recolor(color_func= image_Colors ), interpolation='bilinear')
    plt.axis('off')
    plt.show()

text_path = Path('bilibili.txt')
with text_path.open(encoding='GB18030') as f:
    text_content = f.read()

bilibili = split_text(text=text_content)
draw_wordcloud(text=str(bilibili),image_mask='alicepic.png')
123456789101112131415161718192021222324252627282930
通过bilibili_api获取bilibili弹幕+绘制词云的方法!

需要注意的地方:
10行:jieba.cut返回的是一个generator,里面并不包含分割好的词,下一步用join时才执行计算。
16行:生成的词云需要指定字体,不然出来的词都是框框。无法显示,给个字体路径就好了。
30行:由于WordCloud词云读取的文本必须以字符串或者二进制形式输入,否则会报错TypeError: expected string or bytes-like object的关系,所以我们强制将jieba分词返回的list类型内容转换为str类型。

上一篇:jieba 分词——西游记相关的分词,出现次数最高的20个


下一篇:文本相似性热度统计方案(python版)