比较傻瓜的写法,自己能看懂,没办法还没达到入门水平。最近找一天工作在现公司上一天班,有点焦虑有点累,还没看Python视频教程,定义函数不懂。来看下效果:
致不灭的你11话弹幕词云

一、把B站弹幕保存为本地文件

还是用到requests和BeautifulSoup4库,这个弹幕页源码很简单,用正则也行。可以优化一下自动获取cid,放入弹幕url,我发现这种url只有3000多个弹幕,实际这视频总弹幕有一万多,以后再改吧不是大问题。

import requests
from bs4 import BeautifulSoup

headers = {#如果有问题,补全请求头
        "user-agent": 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) \
        AppleWebKit/537.36 (KHTML, like Gecko) Chrome\
        /91.0.4472.124 Safari/537.36 Edg/91.0.864.64',
}

url = 'https://api.bilibili.com/x/v1/dm/list.so?oid=359375464'
r = requests.get(url, headers=headers)
r.encoding = 'utf-8'
bs = BeautifulSoup(r.text, 'lxml')

with open('danmu2.txt', 'w', encoding='utf-8') as f:
    for i in bs.find_all('d'):
        danmu =i.get_text() #获取d标签内容
        f.write(danmu + '\n')
print('完成')

二、根据获取的弹幕内容,用WordCloud生成词云保存图片

请安装一下jieba和wordcloud库。pip install jieba,非常简单的用法,比模块的官方说明还简单,可以根据模块文档改改参数,不搬过来了。要是看到控制台带font字眼的报错,都是字体指定的问题,你可以下载个字体到py文件目录,或者像我一样指定为windows的字体目录。防止保存图片覆盖,用time模块生成的时间戳用作文件名了。

import jieba
from wordcloud import WordCloud
import time

t = int(time.time())

# 读取弹幕内容
with open("danmu.txt", encoding="utf-8") as f:
    s = f.read()
ls = jieba.lcut(s) # 直接list,默认精确模式
text = ' '.join(ls)

stopwords = ["的","是","了","她","在","也","和","就","都","这"]

wc = WordCloud(
    font_path="C:\Windows\Fonts\msyh.ttf", #指定字体位置
    width = 600,
    height = 400,
    background_color='white',
    max_font_size=100,
    min_font_size=10,
    collocations=False,
    max_words=100,
    stopwords=s, #停止词,上面可以使用本地文件
)
wc.generate_from_text(text)
wc.to_file('ciyun' + str(t) + '.png') #保存到当前目录
print('保存成功,文件名为:' + 'ciyun' + str(t) + '.png')
最后修改:2021 年 07 月 08 日 10 : 57 AM