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中使用Neo4j数据库的教程
Apr 16 Python
Windows上使用virtualenv搭建Python+Flask开发环境
Jun 07 Python
python爬虫之百度API调用方法
Jun 11 Python
TensorFlow Session使用的两种方法小结
Jul 30 Python
解决PyCharm同目录下导入模块会报错的问题
Oct 13 Python
python树莓派红外反射传感器
Jan 21 Python
pandas DataFrame 警告(SettingWithCopyWarning)的解决
Jul 23 Python
Python中import导入不同目录的模块方法详解
Feb 18 Python
python生成并处理uuid的实现方式
Mar 03 Python
python实现图像拼接功能
Mar 23 Python
浅谈Python里面None True False之间的区别
Jul 09 Python
python实现企业微信定时发送文本消息的示例代码
Nov 24 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
网站当前的在线人数
2006/10/09 PHP
PHP中利用substr_replace将指定两位置之间的字符替换为*号
2011/01/27 PHP
php 发送带附件邮件示例
2014/01/23 PHP
PHP批量上传图片的具体实现方法介绍.
2014/02/26 PHP
使用配置类定义Codeigniter全局变量
2014/06/12 PHP
PHP识别二维码的方法(php-zbarcode安装与使用)
2016/07/07 PHP
PHP校验15位和18位身份证号的类封装
2018/11/07 PHP
解决php extension 加载顺序问题
2019/08/16 PHP
基于jquery实现的可编辑下拉框实现代码
2014/08/02 Javascript
javascript根据时间生成m位随机数最大13位
2014/10/30 Javascript
JS动态计算移动端rem的解决方案
2016/10/14 Javascript
如何提高javascript加载速度
2016/12/26 Javascript
详解利用 Vue.js 实现前后端分离的RBAC角色权限管理
2017/09/15 Javascript
一次记住JavaScript的6个正则表达式方法
2018/02/22 Javascript
nodejs读取并去重excel文件
2018/04/22 NodeJs
微信小程序scroll-view实现字幕滚动
2018/07/14 Javascript
浅谈Angularjs中不同类型的双向数据绑定
2018/07/16 Javascript
js设置鼠标悬停改变背景色实现详解
2019/06/26 Javascript
Vue中util的工具函数实例详解
2019/07/08 Javascript
vue cli4下环境变量和模式示例详解
2020/04/09 Javascript
JavaScript运行机制实例分析
2020/04/11 Javascript
python获取标准北京时间的方法
2015/03/24 Python
selenium+python 对输入框的输入处理方法
2018/10/11 Python
python简易实现任意位数的水仙花实例
2018/11/13 Python
PyQt5实现五子棋游戏(人机对弈)
2020/03/24 Python
详解Python3 pandas.merge用法
2019/09/05 Python
python next()和iter()函数原理解析
2020/02/07 Python
python生成大写32位uuid代码
2020/03/03 Python
python Matplotlib模块的使用
2020/09/16 Python
美国电视购物:QVC
2017/02/06 全球购物
SHEIN美国:购买时髦的女性服装
2020/12/02 全球购物
个人简历的自荐信
2013/10/23 职场文书
联谊活动策划书
2014/01/26 职场文书
教师申诉制度
2014/01/29 职场文书
铁拳制作人赞《铁拳7》老头环Mod:制作精良 但别弄了
2022/04/03 其他游戏
Golang 字符串的常见操作
2022/04/19 Golang