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之一个免费的实验室
Sep 14 Python
简单介绍Python中利用生成器实现的并发编程
May 04 Python
Python实现的Excel文件读写类
Jul 30 Python
python中import学习备忘笔记
Jan 24 Python
python实现创建新列表和新字典,并使元素及键值对全部变成小写
Jan 15 Python
matplotlib.pyplot绘图显示控制方法
Jan 15 Python
Python获取好友地区分布及好友性别分布情况代码详解
Jul 10 Python
Django框架创建项目的方法入门教程
Nov 04 Python
python绘制封闭多边形教程
Feb 18 Python
Python Websocket服务端通信的使用示例
Feb 25 Python
Mac PyCharm中的.gitignore 安装设置教程
Apr 16 Python
python代码区分大小写吗
Jun 17 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
如何将一个表单同时提交到两个地方处理
2006/10/09 PHP
zend framework多模块多布局配置
2011/02/26 PHP
PHP入门教程之使用Mysqli操作数据库的方法(连接,查询,事务回滚等)
2016/09/11 PHP
PHP时间处理类操作示例
2018/09/05 PHP
Laravel框架表单验证操作实例分析
2019/09/30 PHP
JS获取html对象的几种方式介绍
2013/12/05 Javascript
js触发select onchange事件的小技巧
2014/08/05 Javascript
js预加载图片方法汇总
2015/06/15 Javascript
深入理解React中es6创建组件this的方法
2016/08/29 Javascript
jQuery web 组件 后台日历价格、库存设置的代码
2016/10/14 Javascript
jquery删除数组中重复元素
2016/12/05 Javascript
使用BootStrap实现表格隔行变色及hover变色并在需要时出现滚动条
2017/01/04 Javascript
BootStrap栅格系统、表单样式与按钮样式源码解析
2017/01/20 Javascript
javascript DOM的详解及实例代码
2017/03/06 Javascript
vue使用axios实现文件上传进度的实时更新详解
2017/12/20 Javascript
使用JavaScript实现node.js中的path.join方法
2018/08/12 Javascript
Vue2.X和Vue3.0数据响应原理变化的区别
2019/11/07 Javascript
element跨分页操作选择详解
2020/06/29 Javascript
[48:56]2018DOTA2亚洲邀请赛 3.31 小组赛 A组 VG vs KG
2018/03/31 DOTA
初学Python函数的笔记整理
2015/04/07 Python
python如何查看系统网络流量的信息
2016/09/12 Python
Python爬虫获取页面所有URL链接过程详解
2020/06/04 Python
Python 用__new__方法实现单例的操作
2020/12/11 Python
css3 实现元素弧线运动的示例代码
2020/04/24 HTML / CSS
基于HTML5 Canvas:字符串,路径,背景,图片的详解
2013/05/09 HTML / CSS
台湾线上百货零售购物平台:friDay购物
2017/08/18 全球购物
Becextech新西兰:数码单反相机和手机在线商店
2018/04/27 全球购物
比利时的在线灯具店:Lampen24.be
2019/07/01 全球购物
检查接待方案
2014/02/27 职场文书
小学生寒假家长评语
2014/04/16 职场文书
刑事辩护授权委托书格式
2014/10/13 职场文书
合同纠纷调解书
2015/05/20 职场文书
行政处罚决定书
2015/06/24 职场文书
推荐六本经典文学奖书籍:此生必读
2019/08/22 职场文书
MySQL主从搭建(多主一从)的实现思路与步骤
2021/05/13 MySQL
Python天气语音播报小助手
2021/09/25 Python