Python+MySQL+Tableau,某站视频数据可视化(1)

本文介绍了如何使用Python从某站获取排行榜前十名视频的基础数据和弹幕内容,通过requests和BeautifulSoup解析API,接着利用MySQL存储数据,为后续的数据可视化(Tableau)做准备。涉及数据获取、数据存储以及弹幕时间戳和文本的处理。
摘要由CSDN通过智能技术生成

仅作例子参考,选取了某站排行榜前十名视频的基础数据和弹幕内容制作可视化图表。

按照使用的工具共分为三个部分:数据获取部分(Python)+数据存储(MySQL)+数据可视化(Tableau),本篇笔记是前两部分的数据准备阶段。

一,数据准备阶段

  • 首先拿到排行榜页面的url(准确说是找到API,不要傻傻复制网页链接),还有请求头,同一页F12刷新
  • 使用requests,get网页详细信息:r=requests.get(url,headers=headers)
  • 然后查看json格式的网页内容:js=r.json()
  • [list]下有多个字典,是排行榜中每个视频的详细信息,按照排名顺序排列,找到所需信息的位置提取出来即可,例如视频标题和up主:
  • title=['data']['list'][0]['title']  #0表示数组list[ ]下的第一个字典
  • name=['data']['list'][0]['owner']['name']
  • 写起来很麻烦,尤其需要提取多个视频的多个数据时,先把list提出来:list=['data']['list']
  • 再使用for循环依次提取列表中前十个视频数据:for i in range(10)
  • 这一段的代码如下:

    import requests
    import json
    
    #全站热门榜单url
    top10_url = 'https://api.bilibili.com/x/web-interface/ranking/v2?rid=0&type=all&jsonp=jsonp'
    top10_headers = {'User-Agent':
    'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36'}
    #获取全站前十名榜单
    r = requests.get(top10_url, headers=top10_headers)
    js = r.json()
    list = js['data']['list']
    for i in range(10):
        title = list[i]['title']
        cid = list[i]['cid']
        tag = list[i]['tname']
        name = list[i]['owner']['name']
        view = list[i]['stat']['view']
        dm_num = list[i]['stat']['danmaku']
        reply = list[i]['stat']['reply']
        favorite = list[i]['stat']['favorite']
        coin = list[i]['stat']['coin']
        share = list[i]['stat']['share']
        like = list[i]['stat']['like']
        rank_num = i+1
    
  • 可以print()看结果

  • 接下来获取弹幕文本和发送弹幕的时间,为制作词云图和峰值图做准备

  •  某站提供了获取弹幕数据的api(当前日期起前5000条弹幕,oid就是cid,可替换别的视频)

  • 直接在浏览器访问会发现得到了一串参数和弹幕文本(xml格式)

    弹幕xml参数意义
    第一个参数是弹幕出现的时间 以秒数为单位。
    第二个参数是弹幕的模式1..3 滚动弹幕 4底端弹幕 5顶端弹幕 6.逆向弹幕 7精准定位 8高级弹幕
    第三个参数是字号, 12非常小,16特小,18小,25中,36大,45很大,64特别大
    第四个参数是字体的颜色 以HTML颜色的十位数为准
    第五个参数是Unix格式的时间戳。基准时间为 1970-1-1 08:00:00
    第六个参数是弹幕池 0普通池 1字幕池 2特殊池 【目前特殊池为高级弹幕专用】
    第七个参数是发送者的ID,用于“屏蔽此弹幕的发送者”功能
    第八个参数是弹幕在弹幕数据库中rowID 用于“历史弹幕”功能
  • 这里我们需要拿到的是弹幕文本和第一个参数(弹幕在视频中出现的时间),这次需要用到beautifulsoup
  • 弹幕文本:
    dm_url = "https://api.bilibili.com/x/v1/dm/list.so?oid=169317052"
    response = requests.get(dm_url, headers=dm_headers)
    bs = B
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值