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使用ctypes模块调用windowsapi获取系统版本示例
Apr 17 Python
python实现查询苹果手机维修进度
Mar 16 Python
Python中类型关系和继承关系实例详解
May 25 Python
python正则中最短匹配实现代码
Jan 16 Python
Python3解释器知识点总结
Feb 19 Python
pygame库实现俄罗斯方块小游戏
Oct 29 Python
Keras SGD 随机梯度下降优化器参数设置方式
Jun 19 Python
Python调用jar包方法实现过程解析
Aug 11 Python
python 绘制正态曲线的示例
Sep 24 Python
PyQT5速成教程之Qt Designer介绍与入门
Nov 02 Python
python使用pygame创建精灵Sprite
Apr 06 Python
Python OpenCV之常用滤波器使用详解
Apr 07 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中使用curl_init函数的说明
2010/11/02 PHP
解决PHP上传非标准格式的图片pjpeg失败的方法
2017/03/12 PHP
php高性能日志系统 seaslog 的安装与使用方法分析
2020/02/29 PHP
JQuery入门——事件切换之hover()方法应用介绍
2013/02/05 Javascript
Document.location.href和.replace的区别示例介绍
2014/03/04 Javascript
JavaScript简单表格编辑功能实现方法
2015/04/16 Javascript
原生JS和JQuery动态添加、删除表格行的方法
2015/05/28 Javascript
JavaScript学习小结(一)——JavaScript入门基础
2015/09/02 Javascript
json对象与数组以及转换成js对象的简单实现方法
2016/06/24 Javascript
JS中的数组方法笔记整理
2016/07/26 Javascript
JS控制div跳转到指定的位置的几种解决方案总结
2016/11/05 Javascript
jquery与js实现全选功能的区别
2017/06/11 jQuery
详解angular笔记路由之angular-router
2017/09/12 Javascript
什么是Vue.js框架 为什么选择它?
2017/10/17 Javascript
Node.js的Koa实现JWT用户认证方法
2018/05/05 Javascript
vue实现一个炫酷的日历组件
2018/10/08 Javascript
JavaScript实现拖拽和缩放效果
2020/08/24 Javascript
[27:08]完美世界DOTA2联赛PWL S2 SZ vs Rebirth 第二场 11.21
2020/11/23 DOTA
Python使用scrapy采集数据过程中放回下载过大页面的方法
2015/04/08 Python
Pycharm技巧之代码跳转该如何回退
2017/07/16 Python
python提取图像的名字*.jpg到txt文本的方法
2018/05/10 Python
Python3.5内置模块之os模块、sys模块、shutil模块用法实例分析
2019/04/27 Python
python中数组和矩阵乘法及使用总结(推荐)
2019/05/18 Python
10个Python面试常问的问题(小结)
2019/11/20 Python
Python接口开发实现步骤详解
2020/04/26 Python
基于Keras 循环训练模型跑数据时内存泄漏的解决方式
2020/06/11 Python
浅析Python迭代器的高级用法
2020/07/16 Python
使用Python爬取Json数据的示例代码
2020/12/07 Python
护理自我鉴定范文
2013/10/06 职场文书
大学英语演讲稿(中英文对照)
2014/01/14 职场文书
银行优秀员工事迹
2014/02/06 职场文书
员工趣味活动方案
2014/08/27 职场文书
幼儿园教师节演讲稿
2014/09/03 职场文书
无房证明样本
2015/06/17 职场文书
mysql查询的控制语句图文详解
2021/04/11 MySQL
处理canvas绘制图片模糊问题
2022/05/11 Javascript