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目录与文件名操作例子
Aug 28 Python
Python实现树莓派WiFi断线自动重连的实例代码
Mar 16 Python
Django文件上传与下载(FileFlid)
Oct 06 Python
python实现while循环打印星星的四种形状
Nov 23 Python
pytorch如何冻结某层参数的实现
Jan 10 Python
Python基础之列表常见操作经典实例详解
Feb 26 Python
浅谈Python的方法解析顺序(MRO)
Mar 05 Python
后端开发使用pycharm的技巧(推荐)
Mar 27 Python
Anaconda+VSCode配置tensorflow开发环境的教程详解
Mar 30 Python
用Python制作mini翻译器的实现示例
Aug 17 Python
利用python汇总统计多张Excel
Sep 22 Python
python用Configobj模块读取配置文件
Sep 26 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中的integer类型使用分析
2010/07/27 PHP
Smarty中常用变量操作符汇总
2014/10/27 PHP
PHP中将一个字符串部分字符用星号*替代隐藏的实现代码
2019/09/08 PHP
TP5框架model常见操作示例小结【增删改查、聚合、时间戳、软删除等】
2020/04/05 PHP
jQuery总体架构的理解分析
2011/03/07 Javascript
基于jquery的点击链接插入链接内容的代码
2012/07/31 Javascript
JS 精确统计网站访问量的实例代码
2013/07/05 Javascript
利用javascript实现禁用网页上所有文本框,下拉菜单,多行文本域
2013/12/14 Javascript
JavaScript常用脚本汇总(一)
2015/03/04 Javascript
jQuery Html控件基本操作(日常收集整理)
2016/03/11 Javascript
jQuery插件datatables使用教程
2016/04/21 Javascript
js实现对table的增加行和删除行的操作方法
2016/10/13 Javascript
jQuery日程管理控件glDatePicker用法详解
2017/03/29 jQuery
javascript 中的try catch应用总结
2017/04/01 Javascript
详解如何在angular2中获取节点
2017/11/23 Javascript
微信小程序自定义底部弹出框
2020/11/16 Javascript
JavaScript中this关键字用法实例分析
2018/08/24 Javascript
VueCli3.0中集成MockApi的方法示例
2019/07/05 Javascript
JavaScript 斐波那契数列 倒序输出 输出100以内的质数代码实例
2019/09/11 Javascript
Python在for循环中更改list值的方法【推荐】
2018/08/17 Python
[原创]Python入门教程5. 字典基本操作【定义、运算、常用函数】
2018/11/01 Python
Python队列RabbitMQ 使用方法实例记录
2019/08/05 Python
对Pytorch中nn.ModuleList 和 nn.Sequential详解
2019/08/18 Python
python实现人机猜拳小游戏
2020/02/03 Python
如何使用python socket模块实现简单的文件下载
2020/09/04 Python
HTML5页面音视频在微信和app下自动播放的实现方法
2016/10/20 HTML / CSS
美国林业供应商:Forestry Suppliers
2019/05/01 全球购物
应届毕业生个人求职信范文
2014/01/29 职场文书
给妈妈洗脚活动方案
2014/08/16 职场文书
国庆节活动总结
2014/08/26 职场文书
2015年网管个人工作总结
2015/05/22 职场文书
毕业论文答辩开场白
2015/05/27 职场文书
html+css合并表格边框的示例代码
2021/03/31 HTML / CSS
jQuery实现影院选座订座效果
2021/04/13 jQuery
Android开发手册Chip监听及ChipGroup监听
2022/06/10 Java/Android
Windows Server 2008配置防火墙策略详解
2022/06/28 Servers