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实现从web抓取文档的方法
Sep 26 Python
在Linux下使用Python的matplotlib绘制数据图的教程
Jun 11 Python
Python中常见的数据类型小结
Aug 29 Python
使用Python写个小监控
Jan 27 Python
python图片验证码生成代码
Jul 02 Python
django之session与分页(实例讲解)
Nov 13 Python
python实现生成Word、docx文件的方法分析
Aug 30 Python
pandas按行按列遍历Dataframe的几种方式
Oct 23 Python
python3读取csv文件任意行列代码实例
Jan 13 Python
pycharm专业版远程登录服务器的详细教程
Sep 15 Python
Python操作CSV格式文件的方法大全
Jul 15 Python
python中urllib包的网络请求教程
Apr 19 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文件上传原理与实现方法详解
2019/12/20 PHP
Yii使用DbTarget实现日志功能的示例代码
2020/07/21 PHP
js+CSS 图片等比缩小并垂直居中实现代码
2008/12/01 Javascript
jquery easyui的tabs使用时的问题
2010/03/23 Javascript
jQuery学习笔记之DOM对象和jQuery对象
2010/12/22 Javascript
js实现运动logo图片效果及运动元素对象sportBox使用方法
2012/12/25 Javascript
2012年开发人员的16款新鲜的jquery插件体验分享
2012/12/28 Javascript
改变隐藏的input中value的值代码
2013/12/30 Javascript
jquery实现checkbox全选全不选的简单实例
2013/12/31 Javascript
javascript常见用法总结
2014/05/22 Javascript
json中换行符的处理方法示例介绍
2014/06/10 Javascript
jQuery中slideUp()方法用法分析
2014/12/24 Javascript
JavaScript学习心得之概述
2015/01/20 Javascript
jQuery解决input超多的表单提交
2015/08/10 Javascript
JavaScript中的原始值和复杂值
2016/01/07 Javascript
BootStrap中Tab页签切换实例代码
2016/05/30 Javascript
AngularJS使用ng-options指令实现下拉框
2016/08/23 Javascript
AngularJS下对数组的对比分析
2016/08/24 Javascript
原生JS发送异步数据请求
2017/06/08 Javascript
详解如何使用webpack在vue项目中写jsx语法
2017/11/08 Javascript
node.js+express+mySQL+ejs+bootstrop实现网站登录注册功能
2018/01/12 Javascript
vue2.0 better-scroll 实现移动端滑动的示例代码
2018/01/25 Javascript
原生实现一个react-redux的代码示例
2018/06/08 Javascript
用JS实现选项卡
2020/03/23 Javascript
vue实现抽屉弹窗效果
2020/11/15 Javascript
浅谈Django自定义模板标签template_tags的用处
2017/12/20 Python
Python3.5文件读与写操作经典实例详解
2019/05/01 Python
Python结合Window计划任务监测邮件的示例代码
2020/08/05 Python
StubHub德国:购买和出售门票
2017/09/06 全球购物
我能否用void** 指针作为参数, 使函数按引用接受一般指针
2013/02/16 面试题
护士专业推荐信
2013/11/02 职场文书
停电通知范文
2015/04/16 职场文书
辩论赛主持人开场白
2015/05/29 职场文书
中国梦宣传标语口号
2015/12/26 职场文书
dubbo集成zipkin获取Traceid的实现
2021/07/26 Java/Android
JS高级程序设计之class继承重点详解
2022/07/07 Javascript