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

本博客将会对B站番剧排行榜的数据进行信息爬取以及数据可视化分析,适应最新的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()

success!
在这里插入图片描述

  • 16
    点赞
  • 135
    收藏
    觉得还不错? 一键收藏
  • 16
    评论
Python爬虫是一种自动化程序,可以模拟用户在网页上的操作行为,例如打开网页、点击按钮、填写表单等,还可以提取网页上的数据进行分析和处理。下面是一个详细的Python爬虫爬取B站弹幕的过程: 第一步,导入所需的库:我们需要使用requests库来发送HTTP请求,以获取网页内容,还需要使用BeautifulSoup库来解析网页。 第二步,发送HTTP请求并获取网页内容:使用requests库的get方法发送HTTP GET请求,获取B站视频的网页内容。 第三步,解析网页内容:使用BeautifulSoup库来解析网页内容,以便于提取所需的数据。 第四步,提取弹幕数据:根据B站的网页结构,我们可以找到弹幕数据所在的HTML元素,并使用BeautifulSoup库提供的方法来提取这些数据。 第五步,保存数据:将提取到的弹幕数据保存到本地文件或数据库中,以便后续分析和处理。 以上就是用Python爬虫爬取B站弹幕的基本步骤。需要注意的是,爬取网站可能有一些反爬机制,例如验证码、IP封锁等,还需要注意爬取速度,避免给服务器带来过大的负载。另外,合法合规地使用爬虫是非常重要的,需要遵守相关的法律法规,并且尊重网站的规则和隐私权。 总之,Python爬虫是一种强大的工具,可以用来爬取各种网站的数据,包括B站的弹幕数据。通过合理的编写代码和处理数据,可以实现对弹幕数据的获取和分析

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值