Python数据可视化:啥是佩奇
- 2019 年 10 月 8 日
- 筆記
B站的弹幕数据有现成的接口,只需找到对应视频的cid值即可。

从上图可以知道,弹幕一共2719条,视频的cid值为72036817。
接下来访问接口,获取数据。
网址:http://comment.bilibili.com/72036817.xml

接口获取的弹幕数据最多只有1000条。
但是总数却是是2719条,那么再找找看。
登陆B站后,点击查看历史弹幕按钮。
发现了每日视频的弹幕接口(只需将请求头加上cookies,即可访问)。

发现还是限制1000条,这里也是不解。
难不成每个视频播放时就只会放出来1000条弹幕?
不过相比第一个接口,应该能多出不少弹幕。

/ 02 / 数据获取
鉴于只是练手而已,就偷个懒。
直接从不需要cookies的接口获取1000条弹幕。
获取数据代码如下。
from bs4 import BeautifulSoup import pandas as pd import requests url = 'http://comment.bilibili.com/72036817.xml' html = requests.get(url).content html_data = str(html, 'utf-8') soup = BeautifulSoup(html_data, 'lxml') results = soup.find_all('d') comments = [comment.text for comment in results] comments_dict = {'comments': comments} df = pd.DataFrame(comments_dict) df.to_csv('bilibili.csv', encoding='utf-8')
最后成功获取1000条弹幕数据。

第958条,和我外公外婆一样,来到家之后一包一包的都是他们从家里带来的菜和水果。
不知道,你有没有相同的感受呢?
相信大多数人都会说,有!!!
一种莫名的感动在心中。
/ 03 / 数据可视化
利用jieba分词,对弹幕数据生成词云。
from wordcloud import WordCloud, ImageColorGenerator import matplotlib.pyplot as plt import pandas as pd import jieba df = pd.read_csv('bilibili.csv', header=None) text = '' for line in df[1]: text += ' '.join(jieba.cut(line, cut_all=False)) backgroud_Image = plt.imread('peiqi.jpg') wc = WordCloud( background_color='white', mask=backgroud_Image, font_path='C:WindowsFontssimhei.ttf', max_words=2000, max_font_size=80, random_state=30, ) wc.generate_from_text(text) # 看看词频高的有哪些,把无用信息去除 process_word = WordCloud.process_text(wc, text) sort = sorted(process_word.items(), key=lambda e:e[1], reverse=True) print(sort[:50]) img_colors = ImageColorGenerator(backgroud_Image) wc.recolor(color_func=img_colors) plt.imshow(wc) plt.axis('off') wc.to_file("佩奇.jpg") print('生成词云成功!')
原图如下,来自一位PPT大神的鼠绘佩奇。
如有需要下图的,公众号回复「佩奇」即可。

最后生成词云图。

啥是佩奇,我肯定是知道的…
估计逛B站的大佬们也都知道,所以猪这个词,出现的并不多。
看看弹幕数据还能发现一些其他什么东西。
这里发现河北、保定、张家口、怀来县这几个地名冒出。
说明短片可能是在河北省拍的。
还有爷爷是短片的主角,短片中的手套和手机也成功吸引了大家的关注。
朋克和硬核又是什么鬼,不解…
/ 04 / 总结
下面这段内容,摘自知乎。
说到底这个宣传片之所以能火起来,靠的还是咱中国人的情。
是农村生活,过年生活的真实写照。
反映了现代社会农村的真实情况,包括4G网以及智能手机还未普及,农村空巢老人的生活状态。
或许,这就是大家有共鸣的点。