哪种视频最受用户喜欢呢?用Python爬虫告诉你

本文通过Python爬取B站热门排行榜数据,分析了2021年6月15日和16日的视频类型。结果显示,搞笑类视频在这两天内占据了排行榜的主导地位。使用pyecharts进行数据可视化展示,揭示了B站用户对搞笑内容的偏好。虽然样本量较小,但分析结果趣味性十足,展现了B站用户的娱乐趋势。
摘要由CSDN通过智能技术生成

今天带大家做点好玩的,把B站热门排行榜数据爬下来做个简单的分析。哪种视频最受用户喜欢呢?
环境:
python3.7 + jupyter

第一步:先把B站的数据给爬下来

def crawl():
    url = 'https://api.bilibili.com/x/web-interface/ranking/v2?rid=0&type=all'
    headers = {
        'accept': 'application/json, text/plain, */*',
        'accept-language': 'zh-CN,zh;q=0.9',
        'origin': 'https://www.bilibili.com',
        'referer': 'https://www.bilibili.com/',
        'sec-ch-ua': '"Google Chrome";v="89", "Chromium";v="89", ";Not A Brand";v="99"',
        'sec-ch-ua-mobile': '?0',
        'sec-fetch-dest': 'empty',
        'sec-fetch-mode': 'cors',
        'sec-fetch-site': 'same-site',
        'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.128 Safari/537.36',
    }

    try:
        resp = requests.get(url=url, headers=headers)
        results = resp.json()
    except:
        return None

    return results

第二步:拿到返回结果,做个简单的数据解析,取出你所需的数据。我是把数据存在mysql中,这就不展示了。

def run():
    results = crawl()

    data = []
    for row in results["data"]["list"]:
        data.append({
            "title": row["title"],  # 标题
            "tname": row["tname"],  # 标签
            "name": row["owner"]["name"],  # 作者
            "short_link": row["short_link"],  # 视频地址
            "score": row["score"],  # 综合得分
            "view": row["stat"]["view"],  # 播放数
            "danmaku": row["stat"]["danmaku"],  # 评论数
            "his_rank": row["stat"]["his_rank"],  # 历史排名
        })
    
    return data
    

第三步:通过pyecharts把数据可视化展示。

"""
通过sql查询想要的数据,做点简单的处理
"""

xaxis_info = {}
yaxis_info = {}
for row in data:
    if row["statDate"] in xaxis_info:
        xaxis_info[row["statDate"]].append(row["tname"])
    else:
        xaxis_info[row["statDate"]] = [row["tname"]]
        
    if row["statDate"] in yaxis_info:
        yaxis_info[row["statDate"]].append(row["count"])
    else:
        yaxis_info[row["statDate"]] = [row["count"]]

"""
通过强大的pyecharts把数据渲染成你想要的样子
"""

bar = Bar(init_opts=opts.InitOpts(width='950px'))
bar.add_xaxis(xaxis_info["2021-06-16"])

for r in ["2021-06-15", "2021-06-16"]:
    if r == "2021-06-15":
        color = "skyblue"
    else:
        color = "pink"

    bar.add_yaxis(r, yaxis_info[r], itemstyle_opts=opts.ItemStyleOpts(color=color))

bar.set_global_opts(
    title_opts=opts.TitleOpts(title="bilibili每日排行榜"),
    datazoom_opts=opts.DataZoomOpts(),
    xaxis_opts=opts.AxisOpts(name_rotate=60, axislabel_opts={"rotate": 90}),

)
bar.render_notebook()

好了,让我们一起来看看最后的效果吧。

在这里插入图片描述

通过上图,我们可以清晰的看出,在 2021-06-15 和 2021-06-16 两天中,搞笑类视频进入每日排行榜最多。

由于数据量较小,分析结果仅供娱乐,B站yyds!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值