python|Python爬虫以及数据可视化分析(最新B站番剧排行榜数据)

本博客将会对B站番剧排行榜的数据进行信息爬取以及数据可视化分析,适应最新的B站网页结构
参考大佬:https://blog.csdn.net/Jacompol/article/details/111692298
python|Python爬虫以及数据可视化分析(最新B站番剧排行榜数据)
文章图片

网页结构:
python|Python爬虫以及数据可视化分析(最新B站番剧排行榜数据)
文章图片

直接上代码,代码注释有步骤解释!

import requests from bs4 import BeautifulSoup import re import pandas import matplotlib.pyplot as plt import matplotlib.font_manager # 1、获取网页内容 def get_html(url): try: request = requests.get(url)# 使用get来获取网页数据 request.raise_for_status()# 如果返回参数不为200,抛出异常 request.encoding = request.apparent_encoding# 获取网页编码方式 return request.text# 返回获取的内容 except: return '错误'#2、信息解析存储 def save(html): soup = BeautifulSoup(html,'html.parser') # 定义好相关列表准备存储相关信息 name = []# 动漫名字 play= []# 播放量 favorite= []# 收藏数 #动漫名字存储 for tag in soup.find_all('div', class_='info'): # print(tag) bf = tag.a.string name.append(str(bf)) print(name) #播放量存储 for tag in soup.find_all('div', class_='detail-state'): # print(tag) bf = tag.find('span', class_='data-box').get_text() # 统一单位为‘万’ if '亿' in bf: num = float(re.search(r'\d(.\d)?', bf).group()) * 10000 # print(num) bf = num else: bf = re.search(r'\d*(\.)?\d', bf).group() play.append(float(bf)) print(play) #收藏数 for tag in soup.find_all('div', class_='detail-state'): sc = tag.find('span', class_='data-box').next_sibling.next_sibling.get_text() sc = re.search(r'\d*(\.)?\d', sc).group() favorite.append(float(sc)) print(favorite)# 存储至excel表格中 info = {'动漫名': name, '播放量(万)': play, '收藏数(万)': favorite} dm_file = pandas.DataFrame(info) dm_file.to_excel('Data.xlsx', sheet_name="动漫数据分析") # 将所有列表返回 return name, play, favorite #3、数据可视化分析 def view(info): #取出列表数据 dm_name = info[0]# 番剧名 dm_play = info[1]# 番剧播放量 dm_favorite = info[2]# 番剧收藏数#使图上的数据可以显示中文 plt.rcParams['font.sans-serif'] = ['SimHei'] plt.rcParams['axes.unicode_minus'] = False #播放量柱形图,收藏数折线图 fig, ax1 = plt.subplots() plt.bar(dm_name, dm_play, color='red')#设置柱状图 plt.title('番剧播放量与收藏数的数据分析')# 表标题 ax1.tick_params(labelsize=6) plt.xlabel('番剧名')# 横轴名 plt.ylabel('播放量')# 纵轴名 plt.xticks(rotation=90, color='#7b68ee')# 设置横坐标变量名旋转度数和颜色#组合图必须加这个 ax2 = ax1.twinx() ax2.plot(dm_favorite, color='yellow')# 设置线粗细,节点样式 plt.ylabel('收藏数(万)') plt.plot(1, label='收藏数', color="yellow", linewidth=1.0, linestyle="-") plt.plot(1, label='播放量', color="red", linewidth=5.0)# 图例 plt.legend() plt.show()def main(): # 网址 url = 'https://www.bilibili.com/v/popular/rank/bangumi' # 获取返回值 html = get_html(url) print(html) info = save(html) view(info) if __name__ == '__main__': main()

【python|Python爬虫以及数据可视化分析(最新B站番剧排行榜数据)】success!
python|Python爬虫以及数据可视化分析(最新B站番剧排行榜数据)
文章图片

    推荐阅读