python实战B站弹幕是如何看待“法外狂徒张三”的?词云分析
Posted 一条IT
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python实战B站弹幕是如何看待“法外狂徒张三”的?词云分析相关的知识,希望对你有一定的参考价值。
更多文章欢迎订阅上方《从实战学python》专栏
哈喽,大家好,我是一条。
今日逛B站时发现“法外狂徒张三”在B站的热度相当之高,随随便便一个几分钟的视频就有
100w+
的播放量。所以一条就来了兴趣,B站人是如何看待“法外狂徒张三”的?
我们爬取弹幕并制作词云分析一下。
获取弹幕
分析url
首先要拿到url,B站搜索张三
,我们就用第一个视频:【张三的社会语录】
https://www.bilibili.com/video/av588303995
F12
分析一下
点击查看历史弹幕
——选择一个日期
可以看到一个seg.so
的链接,后面是oid=
,如此我们就拿到了该视频弹幕的oid
拼接到弹幕API
,得到弹幕的xml
地址
https://api.bilibili.com/x/v1/dm/list.so?oid=345114463
发送请求
由于没有登录验证,我们就简单的发送一条get
请求,并用xpath
解析
import requests
from lxml import etree
def get_text():
url='https://api.bilibili.com/x/v1/dm/list.so?oid=345114463'
res=requests.get(url)
res.encoding='utf-8'
with open("bilibili.xml", 'wb') as f:
f.write(res.content)
html = etree.parse('bilibili.xml',etree.HTMLParser())
b_list=html.xpath('//d//text()')
with open("bilibili.txt",'a+',encoding='utf-8') as f:
for i in b_list:
f.write(i+'\\n')
print("弹幕获取完成")
文本处理
安装分词库
pip install jieba
jieba分词
jieba
分词的作用是将弹幕的长句分成单个的词语,以便进行词云的绘制
在分词前还要去除无效数据,比如标点符号,语气助词……
def get_wc():
with open("bilibili.txt", "r",encoding='utf-8') as f:
txt = f.read()
re_move = [",", "。",'\\n','\\xa0',' ','的','了','吗','我','你']
for i in re_move:
txt = txt.replace(i, " ")
word = jieba.lcut(txt)
with open("bilibili_wc.txt", 'w',encoding='utf-8') as f:
for i in word:
f.write(str(i) + ' ')
print("文本处理完成")
生成词云
安装wordcloud
pip install wordcloud
wordcloud
当我们手中有一篇文档,比如书籍、小说、电影剧本,若想快速了解其主要内容是什么,则可以采用绘制 WordCloud 词云图,显示主要的高频词
这种方式,非常方便。
使用wordcloud可以指定使用的字体, 在windows中, 字体在以下的文件夹中: C:\\Windows\\Fonts
, 可以将其中的字体文件拷贝到当前的文件夹内。
本文基于bilibili
的logo进行词云绘制
def get_img():
bg = numpy.array(image.open('b.png'))
with open("bilibili_wc.txt", "r",encoding='utf-8') as f:
txt = f.read()
word = WordCloud(background_color="white", \\
width=500, \\
height=500,
font_path='simhei.ttf',
mask=bg,
).generate(txt)
word.to_file('test.png')
print("词云图片已保存")
plt.imshow(word) # 使用plt库显示图片
plt.axis("off")
plt.show()
成果展示
if __name__ == '__main__':
get_text()
get_wc()
get_img()
需要弹幕数据和源码的同学
评论区评论【张三】获取
我是一条,一个在互联网摸爬滚打的程序员。
道阻且长,行则将至。
大家的 【点赞,收藏,关注】 就是一条创作的最大动力,我们下期见!
注:关于本篇博客有任何问题和建议,欢迎大家留言!
以上是关于python实战B站弹幕是如何看待“法外狂徒张三”的?词云分析的主要内容,如果未能解决你的问题,请参考以下文章
这八个步骤,Python让你轻松爬取B站弹幕,网友看了都说6