声明,只用于学习研究爬虫
最近小视频《后浪》挺火,该视频是国家一级演员何冰登台演讲,认可、赞美与寄语年轻一代;对他们说:“你们有幸遇见这样的时代,但时代更有幸遇见这样的你们。”《后浪》在bilibili达到了1283.6万播放量,19.2万弹幕,137.2万点赞。
我播放的这个视频弹幕确实挺多,想看看弹幕里面哪些词出现频率最高,看是不是奔涌吧、后浪这些词汇,就萌生了使用pyecharts词云验证的想法。
编程语言:Python3.7. 系统:win10 64位。已将完整代码贴在自己的csdn和本文。
一是分析网站,弹幕是和视频是分离,在开发者工具里面找到弹幕的网址。
二是请求网站。获取到网址后request
三是解析网站
对于会爬虫的小伙伴们,这就很简单了,设置请求头,然后request,解析HTML数据,将获取的弹幕数据和出现的频率一起保存在CSV文件中
四是制作词云
pyecharts 是一个用于生成 Echarts 图表的类库。Echarts 是百度开源的一个数据可视化工具,凭借着良好的交互性,精巧的图表设计,得到了众多开发者的认可。用 Echarts 生成的图可视化效果非常棒,为了与 Python 进行对接,方便在 Python 中直接使用数据生成图,pyecharts就此产生,所以也可以这么认为PyEcharts = Python + Echarts。原网站有词云实例代码,有兴趣的小伙伴可以下载看看。
#!/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.text
return 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()