python b站日排行榜_bilibili弹幕网视频日排行榜数据分析

本文介绍了如何使用Python爬取B站视频日排行榜数据,并进行数据分析和可视化。通过网络爬虫获取HTML源码,提取关键信息如播放量、弹幕数、综合得分等,并使用pandas进行数据清洗,最后通过matplotlib进行数据可视化,包括直方图和散点图,发现播放量与综合得分的相关性较高。
摘要由CSDN通过智能技术生成

网络爬虫名称:bilibili弹幕网视频日排行榜数据分析

网络爬虫爬取的内容:bilibili弹幕网视频日排行榜

设计方案概述:

实现思路:爬取网站html源代码,通过页面分析得到想要的数据位置,提取数据,之后数据可视化等操作

技术难点: html源码过于杂乱,难以提取数据

首先进行页面分析

53860483732a8fe57ddb881189c898e0.png

通过页面分析,我们得知我们需要的关键数据在"li"分支

将"li"分支展开,进一步分析

1b0e5076bd58cb26499735199bdc9098.png

4eb2e3145c0fc7ac11ae6f5f064cf69c.png

2cee830a8f346e51c8f368a89d5c8128.png

52be75ed71cbf5dfbcb947ef1c517f58.png

9b3b92bfb73b528dbd7a10911b155b44.png

通过对"li"分支的分析,我们基本确定了播放量,弹幕数,综合得分等关键信息所在的位置

接下来开始爬取

importrequests as rqfrom bs4 importBeautifulSoupimportpandas as pdimportmatplotlib.pyplot as plt

url= "https://www.bilibili.com/ranking/all/0/0/1"header= {"User-Agent":"Mozilla/5.0"}

res= rq.get(url,headers=header,timeout=15)

res.raise_for_status()

res.encoding=res.apparent_encoding

soup= BeautifulSoup(res.text)

使用requests库爬取,并通过BeautifulSoup库存放到变量Soup中,这里展示一下爬取到的html,可以看到是非常杂乱的

fa6751afb3ba708e1e1774d73856d62f.png

然后开始对数据进行提取,首先是获取视频标题,同样的,我输出一下提取到的标题

#获取视频标题

title =[]for dtitle in soup.find_all('img'):

title.append(dtitle.get('alt'))

df28835d4b590bfb2a73f08b35f77af6.png

接下来同理,提取一些关键信息,因数据略大,就不输出展示了

#获取视频的播放量,弹幕数和UP主

cl_soup=soup.find_all(attrs={'class':'data-box'})

play_view_author=[]for cl_soup incl_soup:

play_view_author.append(cl_soup.text)

play= play_view_author[0:300:3] #播放量

view = play_view_author[1:300:3] #弹幕数

author = play_view_author[2:300:3] #UP主#获取视频的BV号

dBV = soup.find_all(attrs={'class':'title'})

link=[]for dBV indBV:

link.append(dBV.get('href'))for i inrange(link.count(None)):

link.remove(None)

BV=[]for k inrange(len(link)):

BV.append(link[k][-12:])#获取视频的综合得分

soup_pts=soup.find_all(attrs={'class':'pts'})

pts=[]for soup_pts insoup_pts:

pts.append(eval(soup_pts.text[:-15]))

好的,现在关键信息已经获取完成,将其通过pandas库保存为csv表格方便稍后进行数据分析可视化调用

dt = {'排名':range(1,101),'标题':title,'播放量':play,'弹幕数':view,'综合得分':pts,'UP主':author,'BV号':BV} #创建字典

data = pd.DataFrame(dt) #以字典形式创建DataFrame

importdatetime

date= datetime.datetime.now().strftime('%Y-%m-%d') #获取当前日期方便保存

data.to_csv('{}.csv'.format(date),index=False,header=True,encoding="utf-8-sig",mode="a") #保存为csv

此处应该注意,这里的保存时一定要写编码方式,否则很有可能保存的csv出现乱码的现象

接下来对数据进行清洗并可视化分析

读入csv文件

importpandas as pdimportmatplotlib.pyplot as pltfrom scipy.o

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值