我分析了B站的弹幕,看到底啥是佩奇

202 阅读6分钟

640?wx_fmt=jpeg

作者:法纳斯特,Python爱好者,喜欢爬虫,数据分析以及可视化。

GitHub:github.com/Tobby-star

\

她爹也是猪!她娘也是猪! 儿子还是猪!一窝猪!

\

或许这就是最好的回答。

\

原本只是一部电影方与移动合作的宣传短片。

\

却因里面打动人心的故事,大火了一把。

\

就如我之前的一篇文章里所提的。

\

不是年味越来越少,而是我们都长大了。

\

影片透露出那一股暖人心的亲情,如今也是越来越不容乐观。

\

物以稀为贵,或许这就便是能引起大家共鸣的原因吧。

\

其实大家心里都想,只不过由于种种原因,没能实现罢了。

\

\

本次对B站的弹幕数据进行获取。

\

来看看大家的弹幕信息,能不能让我们得到回答。

\

亦或发现一些有趣的信息。

\

\

/ 01 / 网页分析

\

B站的弹幕数据有现成的接口,只需找到对应视频的cid值即可。

\

640?wx_fmt=png

\

从上图可以知道,弹幕一共2719条,视频的cid值为72036817。

\

接下来访问接口,获取数据。

\

网址:comment.bilibili.com/72036817.xm…

\

640?wx_fmt=png

\

接口获取的弹幕数据最多只有1000条。

\

但是总数却是是2719条,那么再找找看。

\

登陆B站后,点击查看历史弹幕按钮。

\

发现了每日视频的弹幕接口(只需将请求头加上cookies,即可访问)。

\

640?wx_fmt=png

\

发现还是限制1000条,这里也是不解。

\

难不成每个视频播放时就只会放出来1000条弹幕?

\

不过相比第一个接口,应该能多出不少弹幕。

\

640?wx_fmt=png

\

/ 02 / 数据获取

\

鉴于只是练手而已,就偷个懒。

\

直接从不需要cookies的接口获取1000条弹幕。

\

获取数据代码如下。

\

from bs4 import BeautifulSoup
import pandas as pd
import requests

url = 'comment.bilibili.com/72036817.xm…'
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条弹幕数据。

\

640?wx_fmt=png

\

第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大神的鼠绘佩奇。

\

640?wx_fmt=png

\

最后生成词云图。

\

640?wx_fmt=jpeg

\

啥是佩奇,我肯定是知道的...

\

估计逛B站的大佬们也都知道,所以猪这个词,出现的并不多。

\

看看弹幕数据还能发现一些其他什么东西。

\

这里发现河北、保定、张家口、怀来县这几个地名冒出。

\

说明短片可能是在河北省拍的。

\

还有爷爷是短片的主角,短片中的手套和手机也成功吸引了大家的关注。

\

朋克和硬核又是什么鬼,不解...

\

\

/ 04 / 总结

\

下面这段内容,摘自知乎。

\

说到底这个宣传片之所以能火起来,靠的还是咱中国人的情。

\

是农村生活,过年生活的真实写照。

\

反映了现代社会农村的真实情况,包括4G网以及智能手机还未普及,农村空巢老人的生活状态。

\

或许,这就是大家有共鸣的点。

\

640?wx_fmt=png

§ §\

Python中文社区作为一个去中心化的全球技术社区,以成为全球20万Python中文开发者的精神部落为愿景,目前覆盖各大主流媒体和协作平台,与阿里、腾讯、百度、微软、亚马逊、开源中国、CSDN等业界知名公司和技术社区建立了广泛的联系,拥有来自十多个国家和地区数万名登记会员,会员来自以公安部、工信部、清华大学、北京大学、北京邮电大学、中国人民银行、中科院、中金、华为、BAT、谷歌、微软等为代表的政府机关、科研单位、金融机构以及海内外知名公司,全平台近20万开发者关注。

\

\

更多推荐

\

啥是佩奇?用Python画给你看!\

\

隐马尔可夫模型(HMM)及Viterbi算法\

\

深入浅出理解Python“乱码”问题\

\

用Python爬取金融市场数据\

\

搭建CNN模型破解网站验证码\

\

用Python进行图文识别(OCR)

\

投稿邮箱:pythonpost@163.com

\

640?wx_fmt=jpeg

****点击下方 阅读原文 免费成为数据科学俱乐部****会员