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使用py2exe打包程序介绍
Nov 20 Python
Python的爬虫程序编写框架Scrapy入门学习教程
Jul 02 Python
NetworkX之Prim算法(实例讲解)
Dec 22 Python
对python中的logger模块全面讲解
Apr 28 Python
Python排序算法之选择排序定义与用法示例
Apr 29 Python
深入浅析Python获取对象信息的函数type()、isinstance()、dir()
Sep 17 Python
Python从数据库读取大量数据批量写入文件的方法
Dec 10 Python
python print出共轭复数的方法详解
Jun 25 Python
python3实现猜数字游戏
Dec 07 Python
Python实现图像去噪方式(中值去噪和均值去噪)
Dec 18 Python
Python3.9 beta2版本发布了,看看这7个新的PEP都是什么
Jun 10 Python
聊聊pytorch测试的时候为何要加上model.eval()
May 23 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
十大催泪虐心动漫,你能坚持看到第几部?
2020/03/04 日漫
php对图像的各种处理函数代码小结
2013/07/08 PHP
jQuery 标题的自动翻转实现代码
2009/10/14 Javascript
基于jQuery的消息提示插件 DivAlert之旅(二)
2010/04/01 Javascript
javascript工具库代码
2012/03/29 Javascript
Raphael一个用于在网页中绘制矢量图形的Javascript库
2013/01/08 Javascript
javascript移出节点removeChild()使用介绍
2014/04/03 Javascript
使用jQuery+EasyUI实现CheckBoxTree的级联选中特效
2015/12/06 Javascript
js阻止浏览器默认行为的简单实例
2016/05/15 Javascript
轻松掌握JavaScript策略模式
2016/08/25 Javascript
nodejs微信公众号支付开发
2016/09/19 NodeJs
JS HTML图片显示Canvas 压缩功能
2017/07/21 Javascript
微信小程序实现顶部选项卡(swiper)
2020/06/19 Javascript
JS开发中基本数据类型具体有哪几种
2017/10/19 Javascript
vue组件watch属性实例讲解
2017/11/07 Javascript
微信小程序实现导航栏选项卡效果
2020/06/19 Javascript
vue2.0 datepicker使用方法
2018/02/04 Javascript
vue实现自定义日期组件功能的实例代码
2018/11/06 Javascript
微信小程序使用蓝牙小插件
2019/09/23 Javascript
p5.js实现故宫橘猫赏秋图动画
2019/10/23 Javascript
小程序实现录音功能
2020/09/22 Javascript
JavaScript实现滚动加载更多
2020/12/27 Javascript
Python中使用第三方库xlrd来读取Excel示例
2015/04/05 Python
python实现的DES加密算法和3DES加密算法实例
2015/06/03 Python
Python实现的微信公众号群发图片与文本消息功能实例详解
2017/06/30 Python
Python实现快速傅里叶变换的方法(FFT)
2018/07/21 Python
[原创]Python入门教程3. 列表基本操作【定义、运算、常用函数】
2018/10/30 Python
python 实现GUI(图形用户界面)编程详解
2019/07/17 Python
基于Python实现粒子滤波效果
2020/12/01 Python
学用政策心得体会
2014/09/10 职场文书
工作疏忽、懈怠的检讨书
2014/09/11 职场文书
检讨书范文
2015/01/27 职场文书
隐形的翅膀观后感
2015/06/10 职场文书
工作收入证明范本
2015/06/12 职场文书
基于Python绘制子图及子图刻度的变换等的问题
2021/05/23 Python
Vue操作Storage本地化存储
2022/04/29 Vue.js