使用python爬取B站“乔萝莉”弹幕并绘制词云,看看观众们的问
2019-07-31 本文已影响0人
清风Python
他有个想法
就在这两天斗鱼“萝莉主播”乔碧萝殿下的一次真人出镜,引爆了各大网络平台。不清楚状况的朋友,看看下面的图片就秒懂了。
今天看到朋友圈大牛的一则挣钱思路,分享给大家:变声器+女装大佬+直播 = 一夜暴富!原谅我出卖了你的朋友圈,可是我是真的觉得好有道理啊,哈哈...
今日娱乐贴
大家都知道,一般出现这种娱乐新闻,哪个网站最活跃?如果不知道我来提示你一句,我喜欢唱跳rap篮球...哈哈,没错B站啊!今天我就带大家去B站看看这位现在被公众尊称乔奶奶的萝莉主播相关视频。为了避免被和谐,找了半天,找到一个她直播下五子棋的短视频。
大家要问了,娱乐贴也不能光看视频和图片吧?到底要闹哪样....B站什么最出名,当然是弹幕了,今天我就带大家分析下B站弹幕,看看有多少网友,对乔奶奶送来了热切的祝福!
B站弹幕获取
B站弹幕的获取方式网上很多的帖子都有说明了,格式如下:
'https://comment.bilibili.com/' + cid + '.xml'
格式时统一的,只需要我们知道视频的cid即可,那么cid何如获取呢?so easy!
我们F12打开开发者工具,然后看到下面一水儿的请求前面都带的数字,就是cid喽。验证下对不对!https://comment.bilibili.com/106640800.xml
弹幕数据
看了下没什么毛病!
弹幕怎么玩?
既然是一则慰问乔奶奶的文章,我们就来分析下弹幕中到底有哪些内容!那么,今天我再拿这个弹幕做一个练习。
小练习思路:
- 通过requests获取网页数据
- 使用BeautifulSoup解析弹幕内容
-
通过wordcloud生成弹幕词云
这里有一个问题,上次做太古神王词云的时候,没有找一个对比度明显的图片,导致最后的词云生成效果很差,这次找了半天,终于找到了一张白底的卡通图片,如下图:
词云背景图.jpg
万事俱备,只差撸代码了,走起...
代码开发
# -*- coding: utf-8 -*-
# @Author : 王翔
# @JianShu : 清风Python
# @Date : 2019/7/30 22:54
# @Software : PyCharm
# @version :Python 3.7.3
# @File : GreetingsToQiao.py
import requests
from bs4 import BeautifulSoup
import jieba
import numpy as np
from PIL import Image
from wordcloud import WordCloud, ImageColorGenerator
class GreetingsToQiao:
def __init__(self):
self.url = url
self.stopwords = self.get_stopwords('stopwords.txt')
self.word_frequency = dict()
def get_info(self):
r = requests.get(self.url)
r.encoding = 'UTF-8'
return r.text
def get_comments(self):
html_data = self.get_info()
soup = BeautifulSoup(html_data, 'lxml')
return ','.join([comment.text for comment in soup.findAll('d')])
@staticmethod
def get_stopwords(file):
with open(file, encoding='utf-8') as f:
lines = f.readlines()
return [line.strip() for line in lines]
def comments_cut(self, data):
words = jieba.cut(data)
for word in words:
if word not in self.stopwords:
self.word_frequency[word] = self.word_frequency.get(word, 0) + 1
def draw_word_cloud(self):
mask = np.array(Image.open('backgroundpicture.jpg'))
wc = WordCloud(
font_path='C:/Windows/Fonts/simhei.ttf', # 设置字体格式
mask=mask,
max_words=200,
max_font_size=100
)
wc.generate_from_frequencies(self.word_frequency)
image_colors = ImageColorGenerator(mask)
wc.recolor(color_func=image_colors)
wc.to_file('greeting.jpg')
def run(self):
comments = self.get_comments()
self.comments_cut(comments)
print(self.word_frequency)
self.draw_word_cloud()
if __name__ == '__main__':
url = 'https://comment.bilibili.com/106640800.xml'
Main = GreetingsToQiao()
Main.run()
让我们看看最终的词云效果吧:
greeting.jpg
The End
OK,今天的内容就到这里,如果觉得内容对你有所帮助,欢迎点击文章右下角的“在看”。
代码、背景图、最终生成的词云,我打包上传百度云了,公众号回复萝莉获取下载地址,哈哈....
期待你关注我的公众号清风Python
,如果觉得不错,希望能动动手指转发给你身边的朋友们。
在之后的周一至五清晨7点10分,希望都能让清风Python的知识文章叫醒大家!谢谢……