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获取文件路径、文件名、后缀名的实例
Apr 23 Python
Python numpy.array()生成相同元素数组的示例
Nov 12 Python
Pyqt5如何让QMessageBox按钮显示中文示例代码
Apr 11 Python
详解Python sys.argv使用方法
May 10 Python
Python PyCharm如何进行断点调试
Jul 05 Python
python3 requests库实现多图片爬取教程
Dec 18 Python
python文件绝对路径写法介绍(windows)
Dec 25 Python
Python定义函数实现累计求和操作
May 03 Python
用python给csv里的数据排序的具体代码
Jul 17 Python
python爬虫scrapy框架之增量式爬虫的示例代码
Feb 26 Python
Python开发五子棋小游戏
May 02 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简单实现模拟登陆功能示例
2017/09/15 PHP
用js实现随机返回数组的一个元素
2007/08/13 Javascript
模仿jQuery each函数的链式调用
2009/07/22 Javascript
JavaScript 异步调用框架 (Part 6 - 实例 & 模式)
2009/08/04 Javascript
判断目标是否是window,document,和拥有tagName的Element的代码
2010/05/31 Javascript
JavaScript中rem布局在react中的应用
2015/12/09 Javascript
JavaScript高阶函数_动力节点Java学院整理
2017/06/28 Javascript
Vue.js实现按钮的动态绑定效果及实现代码
2017/08/21 Javascript
jQuery实现的弹幕效果完整实例
2017/09/06 jQuery
微信小程序wx.previewImage预览图片实例详解
2017/12/07 Javascript
Vue表单类的父子组件数据传递示例
2018/05/03 Javascript
JS插件clipboard.js实现一键复制粘贴功能
2020/12/04 Javascript
Vue绑定内联样式问题
2018/10/17 Javascript
通过npm或yarn自动生成vue组件的方法示例
2019/02/12 Javascript
node将geojson转shp返回给前端的实现方法
2019/05/29 Javascript
vue路由传参三种基本方式详解
2019/12/09 Javascript
node.js中fs文件系统模块的使用方法实例详解
2020/02/13 Javascript
python实现简单socket通信的方法
2016/04/19 Python
Python读取txt文件数据的方法(用于接口自动化参数化数据)
2018/06/27 Python
python实现连续图文识别
2018/12/18 Python
python 定时器,轮询定时器的实例
2019/02/20 Python
详解python破解zip文件密码的方法
2020/01/13 Python
Python基于locals返回作用域字典
2020/10/17 Python
python批量检查两个对应的txt文件的行数是否一致的实例代码
2020/10/31 Python
Opencv python 图片生成视频的方法示例
2020/11/18 Python
Pretty Little Thing爱尔兰:时尚女性服饰
2017/03/27 全球购物
函授毕业生自我鉴定
2013/11/06 职场文书
环保专项行动方案
2014/05/12 职场文书
离婚协议书怎么写
2014/09/12 职场文书
2014年小学生迎国庆65周年演讲稿
2014/09/27 职场文书
晚自修旷课检讨书怎么写
2014/11/17 职场文书
三峡导游词
2015/01/31 职场文书
出纳岗位职责范本
2015/03/31 职场文书
CSS3实现三角形不断放大效果
2021/04/13 HTML / CSS
Vue Element-ui表单校验规则实现
2021/07/09 Vue.js
如何在Python中妥善使用进度条详解
2022/04/05 Python