使用Python爬取B站“乔萝莉”弹幕并绘制词云,看看观众们的问候评论...
就在这两天某直播平台“萝莉主播”乔碧萝殿下的一次真人出镜,引爆了各大网络平台。不清楚状况的朋友,看看下面的图片就秒懂了。
今天看到朋友圈大牛的一则挣钱思路,分享给大家:变声器+女装大佬+直播 = 一夜暴富!原谅我出卖了你的朋友圈,可是我是真的觉得好有道理啊,哈哈…
大家都知道,一般出现这种娱乐新闻,哪个网站最活跃?如果不知道我来提示你一句,我喜欢唱跳rap篮球…哈哈,没错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生成弹幕词云
这里有一个问题,上次做太古神王词云的时候,没有找一个对比度明显的图片,导致最后的词云生成效果很差,这次找了半天,终于找到了一张白底的卡通图片,如下图:
万事俱备,只差撸代码了,走起…
代码开发
# -*- 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()
让我们看看最终的词云效果吧
OK,今天的内容就到这里,如果觉得内容对你有所帮助,欢迎点击文章右下角的“在看”。
代码、背景图、最终生成的词云,我打包上传百度云了,公众号回复萝莉获取下载地址,哈哈….
期待你关注我的公众号清风Python,如果觉得不错,希望能动动手指转发给你身边的朋友们。
在之后的周一至五清晨7点10分,希望都能让清风Python的知识文章叫醒大家!谢谢……
---------------
本文转自-作者:王翔|清风Python
- 点赞
- 收藏
- 关注作者
评论(0)