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实现划词翻译
Apr 23 Python
Pyhton中防止SQL注入的方法
Feb 05 Python
Windows下搭建python开发环境详细步骤
Jul 20 Python
Python中Collections模块的Counter容器类使用教程
May 31 Python
python回调函数中使用多线程的方法
Dec 25 Python
pycharm设置注释颜色的方法
May 23 Python
使用Python的SymPy库解决数学运算问题的方法
Mar 27 Python
Django的性能优化实现解析
Jul 30 Python
在Tensorflow中查看权重的实现
Jan 24 Python
记一次pyinstaller打包pygame项目为exe的过程(带图片)
Mar 02 Python
ipython jupyter notebook中显示图像和数学公式实例
Apr 15 Python
python脚本框架webpy的url映射详解
Nov 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 URL编码解码函数代码
2009/03/10 PHP
PHP实现十进制、二进制、八进制和十六进制转换相关函数用法分析
2017/04/25 PHP
对laravel的csrf 防御机制详解,及form中csrf_token()的存在介绍
2019/10/24 PHP
验证用户是否修改过页面的数据的实现方法
2008/09/26 Javascript
jqPlot 基于jquery的画图插件
2011/04/26 Javascript
jQuery CSS()方法改变现有的CSS样式
2014/08/20 Javascript
html的DOM中document对象forms集合用法实例
2015/01/21 Javascript
浏览器环境下JavaScript脚本加载与执行探析之defer与async特性
2016/01/14 Javascript
使用bootstrapValidator插件进行动态添加表单元素并校验
2016/09/28 Javascript
JavaScript中创建对象的7种模式详解
2017/02/21 Javascript
JQuery 封装 Ajax 常用方法(推荐)
2017/05/21 jQuery
js实现简单数字变动效果
2017/11/06 Javascript
在Vue中使用Compass的方法
2018/03/02 Javascript
详解vuex的简单使用
2018/03/12 Javascript
vue-cli2与vue-cli3在一台电脑共存的实现方法
2019/09/25 Javascript
详解如何在vue+element-ui的项目中封装dialog组件
2020/12/11 Vue.js
将Emacs打造成强大的Python代码编辑工具
2015/11/20 Python
Pyinstaller将py打包成exe的实例
2018/03/31 Python
python读取目录下最新的文件夹方法
2018/12/24 Python
浅析Python3 pip换源问题
2020/01/06 Python
简单了解python filter、map、reduce的区别
2020/01/14 Python
如何解决pycharm调试报错的问题
2020/08/06 Python
使用Python解析Chrome浏览器书签的示例
2020/11/13 Python
你应该知道的30个css选择器
2014/03/19 HTML / CSS
利用HTML5绘制点线面组成的3D图形的示例
2015/05/12 HTML / CSS
详解移动端HTML5页面端去掉input输入框的白色背景和边框(兼容Android和ios)
2016/12/15 HTML / CSS
全球最大的房车租赁市场:Outdoorsy
2018/09/19 全球购物
英国儿童鞋和靴子:Start-Rite
2019/05/06 全球购物
Footshop法国:购买运动鞋
2020/01/19 全球购物
烹调加工管理制度
2014/02/04 职场文书
普通话宣传标语
2014/06/26 职场文书
村道德模范事迹材料
2014/08/28 职场文书
学校食堂标语
2014/10/06 职场文书
优秀党员先进事迹材料
2014/12/18 职场文书
同乡会致辞
2015/07/30 职场文书
Redis命令处理过程源码解析
2022/02/12 Redis