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 相关文章推荐
可用于监控 mysql Master Slave 状态的python代码
Feb 10 Python
Python中处理字符串的相关的len()方法的使用简介
May 19 Python
python利用rsa库做公钥解密的方法教程
Dec 10 Python
解析Python中的eval()、exec()及其相关函数
Dec 20 Python
Python绘制3d螺旋曲线图实例代码
Dec 20 Python
Python3.4实现远程控制电脑开关机
Feb 22 Python
pytorch梯度剪裁方式
Feb 04 Python
python logging.info在终端没输出的解决
May 12 Python
关于tensorflow softmax函数用法解析
Jun 30 Python
python中如何使用虚拟环境
Oct 14 Python
python字符串常规操作大全
May 02 Python
使用pipenv管理python虚拟环境的全过程
Sep 25 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 Mysql日期和时间函数集合
2007/11/16 PHP
PHP 文件上传功能实现代码
2009/06/24 PHP
收藏的PHP常用函数 推荐收藏保存
2010/02/21 PHP
《PHP编程最快明白》第二讲 数字、浮点、布尔型、字符串和数组
2010/11/01 PHP
初识PHP中的Swoole
2016/04/05 PHP
常用参考资料(手册)下载或者链接
2006/07/22 Javascript
jQuery select表单提交省市区城市三级联动核心代码
2014/06/09 Javascript
JS中产生20位随机数以0-9为例也可以是a-z A-Z
2014/08/01 Javascript
本人自用的global.js库源码分享
2015/02/28 Javascript
jQuery插件slider实现拖动滑块选取价格范围
2015/04/30 Javascript
JQuery实现的按钮倒计时效果
2015/12/23 Javascript
Javascript 5种方法实现过滤删除前后所有空格
2016/06/22 Javascript
JavaScript Base64 作为文件上传的实例代码解析
2017/02/14 Javascript
Nodejs中的JWT和Session的使用
2018/08/21 NodeJs
在React中写一个Animation组件为组件进入和离开加上动画/过度效果
2019/06/24 Javascript
js实现登录时记住密码的方法分析
2020/04/05 Javascript
vue实现购物车功能(商品分类)
2020/04/20 Javascript
举例简单讲解Python中的数据存储模块shelve的用法
2016/03/03 Python
Python 搭建Web站点之Web服务器网关接口
2016/11/06 Python
python3实现公众号每日定时发送日报和图片
2018/02/24 Python
Python查找两个有序列表中位数的方法【基于归并算法】
2018/04/20 Python
Python Requests库基本用法示例
2018/08/20 Python
20行python代码的入门级小游戏的详解
2019/05/05 Python
python并发编程多进程之守护进程原理解析
2019/08/20 Python
tensorflow实现将ckpt转pb文件的方法
2020/04/22 Python
CSS3 选择器 属性选择器介绍
2012/01/21 HTML / CSS
Html5实现文件异步上传功能
2017/05/19 HTML / CSS
HTML5页面嵌入小程序没有返回按钮及返回页面空白的问题
2020/05/28 HTML / CSS
世界上最大的街头服饰网站:Karmaloop
2017/02/04 全球购物
生物化工工艺专业应届生求职信
2013/10/08 职场文书
硕士研究生求职自荐信范文
2014/03/11 职场文书
C++程序员求职信范文
2014/04/14 职场文书
党支部班子“四风”问题自我剖析材料
2014/09/28 职场文书
优秀少先队员事迹材料
2014/12/24 职场文书
2019餐饮行业创业计划书!
2019/06/27 职场文书
python多次执行绘制条形图
2022/04/20 Python