声明,只用于学习研究爬虫
1.《后浪》弹幕词云
最近小视频《后浪》挺火,该视频是国家一级演员何冰登台演讲,认可、赞美与寄语年轻一代;对他们说:“你们有幸遇见这样的时代,但时代更有幸遇见这样的你们。”《后浪》在bilibili达到了1283.6万播放量,19.2万弹幕,137.2万点赞。
我播放的这个视频弹幕确实挺多,想看看弹幕里面哪些词出现频率最高,看是不是奔涌吧、后浪这些词汇,就萌生了使用pyecharts词云验证的想法。
编程语言:Python3.7. 系统:win10 64位。已将完整代码贴在自己的csdn和本文。
2.代码流程
一是分析网站,弹幕是和视频是分离,在开发者工具里面找到弹幕的网址。
二是请求网站。获取到网址后request
三是解析网站
对于会爬虫的小伙伴们,这就很简单了,设置请求头,然后request,解析HTML数据,将获取的弹幕数据和出现的频率一起保存在CSV文件中
四是制作词云
pyecharts 是一个用于生成 Echarts 图表的类库。Echarts 是百度开源的一个数据可视化工具,凭借着良好的交互性,精巧的图表设计,得到了众多开发者的认可。用 Echarts 生成的图可视化效果非常棒,为了与 Python 进行对接,方便在 Python 中直接使用数据生成图,pyecharts就此产生,所以也可以这么认为PyEcharts = Python + Echarts。原网站有词云实例代码,有兴趣的小伙伴可以下载看看。
3.完整代码
#!/usr/bin/python
#导入相关库
import requests,json,pandas
from bs4 import BeautifulSoup
from pyecharts import WordCloud#请求网页
def get_html(url):headers={'user-agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.92 Safari/537.36',}response=requests.get(url,headers = headers)response.encoding = 'utf-8'data=response.textreturn data#解析网页
def paser_html(html):danmu=[]soup=BeautifulSoup(html,'lxml')barrages=soup.find_all('d')for barrage in barrages:danmu.append( barrage.text)#s数据分析包data = pandas.Series(danmu).value_counts()#将数据存入文件data.to_csv('danmu.csv',encoding='utf-8-sig')
#生成词云
def wordcloud():dan_to=pandas.read_csv('danmu.csv',names=['A','B'])wordcloud = WordCloud(width=800, height=500)wordcloud.add('', dan_to['A'],dan_to['B'], word_size_range=[20, 100],shape="diamond")wordcloud.render()
#主函数
if __name__ == '__main__':#弹幕地址url = 'https://api.bilibili.com/x/v1/dm/list.so?oid=186803402'#请求网页html=get_html(url)#解析网页paser_html(html)#生成词云wordcloud()