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中变量赋值的问题
Jan 12 Python
Python实现多线程抓取网页功能实例详解
Jun 08 Python
基于Django用户认证系统详解
Feb 21 Python
Python Web编程之WSGI协议简介
Jul 18 Python
在python 中实现运行多条shell命令
Jan 07 Python
Python3 实现文件批量重命名示例代码
Jun 03 Python
Python使用微信itchat接口实现查看自己微信的信息功能详解
Aug 22 Python
python 生成器和迭代器的原理解析
Oct 12 Python
K最近邻算法(KNN)---sklearn+python实现方式
Feb 24 Python
使用jupyter notebook将文件保存为Markdown,HTML等文件格式
Apr 14 Python
Python 多进程原理及实现
Dec 21 Python
OpenCV-Python使用cv2实现傅里叶变换
Jun 09 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
判断PHP数组是否为空的代码
2011/09/08 PHP
php可扩展的验证类实例(可对邮件、手机号、URL等验证)
2015/07/09 PHP
JavaScript实现禁止后退的方法
2006/12/27 Javascript
通过MSXML2自动获取QQ个人头像及在线情况(给初学者)
2007/01/22 Javascript
把html页面的部分内容保存成新的html文件的jquery代码
2009/11/12 Javascript
js 实现css风格选择器(压缩后2KB)
2012/01/12 Javascript
js arguments,jcallee caller用法总结
2013/11/30 Javascript
jquery实现网页查找功能示例分享
2014/02/12 Javascript
javascript中数组的定义及使用实例
2015/01/21 Javascript
JavaScript日期对象(Date)基本用法示例
2017/01/18 Javascript
JavaScript+CSS相册特效实例代码
2017/09/07 Javascript
AngularJS实现的select二级联动下拉菜单功能示例
2017/10/25 Javascript
微信小程序云开发之使用云存储
2019/05/17 Javascript
Vue项目总结之webpack常规打包优化方案
2019/06/06 Javascript
js脚本中执行java后台代码方法解析
2019/10/11 Javascript
探索node之事件循环的实现
2020/10/30 Javascript
python字符串对其居中显示的方法
2015/07/11 Python
Python应用03 使用PyQT制作视频播放器实例
2016/12/07 Python
Python实现OpenCV的安装与使用示例
2018/03/30 Python
pandas.DataFrame.to_json按行转json的方法
2018/06/05 Python
python处理两种分隔符的数据集方法
2018/12/12 Python
NumPy排序的实现
2020/01/21 Python
为什么黑客都用python(123个黑客必备的Python工具)
2020/01/31 Python
Wiggle中国:英国骑行、跑步、游泳 & 铁三运动装备专卖网店
2016/08/02 全球购物
台湾SHOPRO购物行家:亚洲首创影视.3C.家电.优质购物平台
2018/05/07 全球购物
市场部专员岗位职责
2013/11/30 职场文书
销售行政专员职责
2014/01/03 职场文书
安全教育演讲稿
2014/05/09 职场文书
优秀乡村医生先进事迹材料
2014/08/23 职场文书
2014年教师节座谈会发言稿
2014/09/10 职场文书
纪念九一八爱国演讲稿600字
2014/09/14 职场文书
公积金接收函格式
2015/01/30 职场文书
《怀念母亲》教学反思
2016/02/19 职场文书
使用pandas生成/读取csv文件的方法实例
2021/07/09 Python
SpringBoot详解整合Redis缓存方法
2022/07/15 Java/Android