Python实现bilibili时间长度查询的示例代码


Posted in Python onJanuary 14, 2020

说明:最近在B站看一些材料力学视频时候,感觉有一些分集狂魔的分集真的很恐怖,有的甚至上百集,因此决定写个小脚本每次分析下到底这个系列视频到底有多长。

好了,下面是分析过程:

第一步当然是打开一个视频

接着第二部右键查看源代码

Python实现bilibili时间长度查询的示例代码

既然我们是要查找时间,然后我就搜索time相关的,哟!,还真有,其中有个timelength,英语有点基础的应该也能读出,这不就是时长的意思。哈哈哈,这也太简单了,但是又发现高兴太早了,这个经过不论是除60还是除3600都无法得到需要的结果,就在这时,突然一个乘法口诀蹦了出来,这个timelength的前几位除60不就是要的结果吗,这样我们就顺利找到了

接下来又出现一个问题,这一个页面的是出来的,但是一共有多少总不能每次都要输入吧,接下来就继续分析
看了一下,一共有93集,但是直接搜肯定是不行的,毕竟搜了一下有一百多个。看来要另想出路了。
想到刚才的timelength参数是使用的类似字典类型,那我接按字典的格式搜不也行吗,
这下行了,搜到的第一个就是,哈哈,我都有些自负了,这也太简单了,这个问题再次被顺利解决了。

最后是代码,小白写,大佬勿喷,如有不足还请谅解,源码已上传至GitHub

import requests
import re
import pygame
import time

header = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) '
            'Chrome/74.0.3729.157 ''Safari/537.36 '}


class Bili(object):
  def __init__(self, url):
    self.url = url
    self.max_page = 0
    self.the_time = list()
    self.sum_time = 0
    self.b_url = 'https://www.bilibili.com/video/av' + re.search(r'av(\d+)', url).group(1) + '?p='

  @staticmethod
  def get_html(acp_url):
    try:
      r = requests.get(acp_url, headers=header)
      r.raise_for_status()
      r.encoding = r.apparent_encoding
      return r.text
    except Exception as result:
      print("get_html:", result)
      return ""

  def parse_max_page(self):
    self.max_page = int(re.findall(r'videos":(.+?),', self.get_html(self.url))[0])

  def parse_time(self, se_url):
    text = self.get_html(se_url)
    single_time = re.findall(r'"timelength":(\d+),', text)[0][:-3]
    return single_time

  def get_time(self):
    for i in range(self.max_page + 1):
      s_url = self.b_url + str(i)
      ret = self.parse_time(s_url)
      self.the_time.append(ret)
      print("第%d页 time=%s" % (i, ret))
    for each in self.the_time:
      self.sum_time += int(each)
    print("sum_time:%.3s h" % str(self.sum_time / 60))
 
  def main(self):
    self.parse_max_page()
    self.get_time()


if __name__ == '__main__':
  i_url = input("请输入链接地址[要以+结尾]:")
  Bili(i_url).main()

说明

这句i_url = input("请输入链接地址[要以+结尾]:")由于本身编译器的原因,直接回车会跳转

GitHub地址:https://github.com/easyprogramer/My_Python_Spider/tree/master

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python实现全局变量的两个解决方法
Jul 03 Python
利用Django框架中select_related和prefetch_related函数对数据库查询优化
Apr 01 Python
python从网络读取图片并直接进行处理的方法
May 22 Python
举例区分Python中的浅复制与深复制
Jul 02 Python
Python中判断输入是否为数字的实现代码
May 26 Python
基于python进行桶排序与基数排序的总结
May 29 Python
Sanic框架请求与响应实例分析
Jul 16 Python
Django 权限认证(根据不同的用户,设置不同的显示和访问权限)
Jul 24 Python
wxpython布局的实现方法
Nov 01 Python
python实现智能语音天气预报
Dec 02 Python
Python对称的二叉树多种思路实现方法
Feb 28 Python
Python关键字及可变参数*args,**kw原理解析
Apr 04 Python
基于python监控程序是否关闭
Jan 14 #Python
关于pytorch中全连接神经网络搭建两种模式详解
Jan 14 #Python
使用Pytorch来拟合函数方式
Jan 14 #Python
pytorch 模拟关系拟合——回归实例
Jan 14 #Python
PyTorch实现AlexNet示例
Jan 14 #Python
Pytorch 实现focal_loss 多类别和二分类示例
Jan 14 #Python
Python实现钉钉订阅消息功能
Jan 14 #Python
You might like
php的array_multisort()使用方法介绍
2012/05/16 PHP
PHPTree――php快速生成无限级分类
2018/03/30 PHP
PHP手机短信验证码实现流程详解
2018/05/17 PHP
Tab页界面,用jQuery及Ajax技术实现
2009/09/21 Javascript
JavaScript格式化数字的函数代码
2010/11/30 Javascript
关于setInterval、setTimeout在jQuery中的使用注意事项
2011/09/28 Javascript
js操作模态窗口及父子窗口间相互传值示例
2014/06/09 Javascript
分享20个提升网站界面体验的jQuery插件
2014/12/15 Javascript
JavaScript常用数组算法小结
2016/02/13 Javascript
JavaScript接口的实现三种方式(推荐)
2016/06/14 Javascript
Bootstrap Modal对话框如何在关闭时触发事件
2016/12/02 Javascript
写jQuery插件时的注意点
2017/02/20 Javascript
Bootstrap实现基于carousel.js框架的轮播图效果
2017/05/02 Javascript
layer弹窗插件操作方法详解
2017/05/19 Javascript
微信小程序 开发MAP(地图)实例详解
2017/06/27 Javascript
微信小程序录音与播放录音功能
2017/12/25 Javascript
CentOS环境中MySQL修改root密码方法
2018/01/07 Javascript
vue 2.x 中axios 封装的get 和post方法
2018/02/28 Javascript
深入理解JS的事件绑定、事件流模型
2018/05/13 Javascript
微信小程序利用Canvas绘制图片和竖排文字详解
2019/06/25 Javascript
使用Vue-scroller页面input框不能触发滑动的问题及解决方法
2020/08/08 Javascript
利用python编写一个图片主色转换的脚本
2017/12/07 Python
利用Python将数值型特征进行离散化操作的方法
2018/11/06 Python
python3 动态模块导入与全局变量使用实例
2019/12/22 Python
python实现梯度下降和逻辑回归
2020/03/24 Python
Python自动重新加载模块详解(autoreload module)
2020/04/01 Python
pandas中的ExcelWriter和ExcelFile的实现方法
2020/04/24 Python
Keras实现将两个模型连接到一起
2020/05/23 Python
django的autoreload机制实现
2020/06/03 Python
Python制作一个仿QQ办公版的图形登录界面
2020/09/22 Python
政协工作总结2015
2015/05/20 职场文书
贷款收入证明范本
2015/06/12 职场文书
《祁黄羊》教学反思
2016/02/20 职场文书
南阳市白酒市场的调查报告
2019/11/08 职场文书
python中print格式化输出的问题
2021/04/16 Python
Nginx设置HTTPS的方法步骤 443证书配置方法
2022/03/21 Servers