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中的迭代器、生成器与列表解析用法
Mar 20 Python
详谈Python基础之内置函数和递归
Jun 21 Python
Python iter()函数用法实例分析
Mar 17 Python
Python实现简单的文本相似度分析操作详解
Jun 16 Python
python高级特性和高阶函数及使用详解
Oct 17 Python
win7 x64系统中安装Scrapy的方法
Nov 18 Python
python字符串循环左移
Mar 08 Python
python爬虫 urllib模块反爬虫机制UA详解
Aug 20 Python
python 控制台单行刷新,多行刷新实例
Feb 19 Python
Python中os模块功能与用法详解
Feb 26 Python
mac安装python3后使用pip和pip3的区别说明
Sep 01 Python
python画条形图的具体代码
Apr 20 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中常见的mongodb查询操作
2013/06/20 PHP
QQ互联一键登录审核不通过的解决方案
2014/09/10 PHP
PHP获取毫秒级时间戳的方法
2015/04/15 PHP
php导出中文内容excel文件类实例
2015/07/06 PHP
thinkphp3.2.0 setInc方法 源码全面解析
2018/01/29 PHP
ext form 表单提交数据的方法小结
2008/08/08 Javascript
jcarousellite.js 基于Jquery的图片无缝滚动插件
2010/12/30 Javascript
Extjs4中tree的拖拽功能(可以两棵树之间拖拽) 简单实例
2013/12/08 Javascript
jquery操作select大全
2014/04/25 Javascript
js判断子窗体是否关闭的方法
2015/08/11 Javascript
在JS中a标签加入单击事件屏蔽href跳转页面
2016/12/16 Javascript
JS创建Tag标签的方法详解
2017/06/09 Javascript
微信小程序组件 marquee实例详解
2017/06/23 Javascript
AngularJS实现图片上传和预览功能的方法分析
2017/11/08 Javascript
jQuery中库的引用方法
2018/01/06 jQuery
JavaScript中的连续赋值问题实例分析
2019/07/12 Javascript
js实现多张图片每隔一秒切换一张图片
2019/07/29 Javascript
js实现左右轮播图
2020/01/09 Javascript
js动态生成表格(节点操作)
2021/01/12 Javascript
Python MySQLdb模块连接操作mysql数据库实例
2015/04/08 Python
Python 安装第三方库 pip install 安装慢安装不上的解决办法
2019/06/18 Python
pyqt 多窗口之间的相互调用方法
2019/06/19 Python
简单了解python中对象的取反运算符
2019/07/01 Python
python实现将中文日期转换为数字日期
2020/07/14 Python
python中关于数据类型的学习笔记
2020/07/19 Python
如何在 Matplotlib 中更改绘图背景的实现
2020/11/26 Python
钉钉企业内部H5微应用开发详解
2020/05/12 HTML / CSS
世界上最大的各式箱包网络零售店:eBag
2016/07/21 全球购物
最新党员的自我评价分享
2013/11/04 职场文书
学生个人的自我评价分享
2013/11/05 职场文书
勤俭节约倡议书
2014/04/14 职场文书
保密工作承诺书
2014/08/29 职场文书
党员“一帮一”活动总结
2015/05/07 职场文书
CSS3鼠标悬浮过渡缩放效果
2021/04/17 HTML / CSS
使用Redis做预定库存缓存功能
2022/04/02 Redis
Python实现将多张图片合成MP4视频并加入背景音乐
2022/04/28 Python