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实现在Linux系统下更改当前进程运行用户
Feb 04 Python
Python3.x中自定义比较函数
Apr 24 Python
python框架django基础指南
Sep 08 Python
pip安装时ReadTimeoutError的解决方法
Jun 12 Python
python实现列表中由数值查到索引的方法
Jun 27 Python
解决PyCharm import torch包失败的问题
Oct 13 Python
python3实现多线程聊天室
Dec 12 Python
python 爬取学信网登录页面的例子
Aug 13 Python
Python基于gevent实现高并发代码实例
May 15 Python
Django model.py表单设置默认值允许为空的操作
May 19 Python
python进度条显示-tqmd模块的实现示例
Aug 23 Python
python pyhs2 的安装操作
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
ThinkPHP的模版中调用session数据的方法
2014/07/01 PHP
php.ini中date.timezone设置详解
2016/11/20 PHP
用js模拟JQuery的show与hide动画函数代码
2010/09/20 Javascript
浅析Js(Jquery)中,字符串与JSON格式互相转换的示例(直接运行实例)
2013/07/09 Javascript
JavaScript设计模式之抽象工厂模式介绍
2014/12/28 Javascript
jQuery实现三级菜单的代码
2016/05/09 Javascript
MVC+jQuery.Ajax异步实现增删改查和分页
2020/12/22 Javascript
javascript解析ajax返回的xml和json格式数据实例详解
2017/01/05 Javascript
Angular ui.bootstrap.pagination分页
2017/01/20 Javascript
vue 2.0组件与v-model详解
2017/03/27 Javascript
jQuery动态添加元素无法触发绑定事件的解决方法分析
2018/01/02 jQuery
小程序指纹验证的实现代码
2018/12/04 Javascript
JS实现的小火箭发射动画效果示例
2018/12/08 Javascript
理解JavaScript中的Proxy 与 Reflection API
2020/09/21 Javascript
在vue项目中引用Antv G2,以饼图为例讲解
2020/10/28 Javascript
[01:45]IMBATV TI4前线报道-选手到达
2014/07/07 DOTA
[41:08]TNC vs VG 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
删除目录下相同文件的python代码(逐级优化)
2012/05/25 Python
浅谈Python中chr、unichr、ord字符函数之间的对比
2016/06/16 Python
通过Python 获取Android设备信息的轻量级框架
2017/12/18 Python
python2 与 pyhton3的输入语句写法小结
2018/09/10 Python
python json.loads兼容单引号数据的方法
2018/12/19 Python
Python实现根据日期获取当天凌晨时间戳的方法示例
2019/04/09 Python
用Python自动清理电脑内重复文件,只要10行代码(自动脚本)
2021/01/09 Python
Python读写Excel表格的方法
2021/03/02 Python
美国在线咖啡、茶和餐厅供应商:LollicupStore
2018/05/04 全球购物
Christys’ Hats官网:英国帽子制造商
2018/11/28 全球购物
递归实现回文判断(如:abcdedbca就是回文,判断一个面试者对递归理解的简单程序)
2013/04/28 面试题
服务行业口号
2014/06/11 职场文书
职工小家建设活动方案
2014/08/25 职场文书
2015选调生工作总结
2015/07/24 职场文书
股东出资协议书
2016/03/21 职场文书
vue中三级导航的菜单权限控制
2021/03/31 Vue.js
python使用pywinauto驱动微信客户端实现公众号爬虫
2021/05/19 Python
利用 SQL Server 过滤索引提高查询语句的性能分析
2021/07/15 SQL Server
用Java实现简单计算器功能
2021/07/21 Java/Android