Python如何实现爬取B站视频


Posted in Python onMay 20, 2020

5月3日晚,央视在《新闻联播》前播放了B站青年宣言片《后浪》,这是B站首次登陆央视黄金时段,今天在朋友圈陆续看到相关的视频。最早用B站的同学都知道,B站是和A站以异曲同工的鬼畜视频及动漫,进入到大众视野的非主流视频网站。哔哩哔哩现为国内领先的年轻人娱乐、文化社区,该网站于2009年6月26日创建,被粉丝们亲切的称为“B站”。

B站之所以火,是因为趣味与知识并存。它是一个重度宅腐二次元集结地。B站包含动漫、漫画、游戏,也有很多由繁到简、五花八门的视频,很多冷门的软件和绘画技巧在B站都可以找到完整的教学视频。正如一句“你在B站看番,我在B站学习”,B站还是有一些质量比较好的学习视频。当你在B站上看到喜欢的视频想保存下来时,怎么办呢?

转入正题,本篇推文主要介绍如何将B站上把喜欢的视频下载下来,帮助更多需要学习的小伙伴,详细步骤如下:

  • 网页分析
  • 视频下载方法
  • 成果展示

微信视频号的加入,再度引燃了短视频领域,今天我们爬取B站的每天播放量最多的小视频,其他类型的视频可以参考这个方法。

Python如何实现爬取B站视频

网页分析

网址为:

'http://vc.bilibili.com/p/eden/rank#/?tab=全部'

我们可以看到Request URL这个属性值,我们向下滑动加载视频的过程中,发现只有这段url是不变的。next_offset 会一直变化,我们可以猜测,这个可能就是获取下一个视频序号,我们只需要把这部分参数取出来,把 next_offset 写成变量值,用 JSON 的格式返回到目标网页即可。

Python如何实现爬取B站视频

Python如何实现爬取B站视频

视频下载方法

上一部分已对网页进行了分析,现在我们可以利用requests.get方法来获取B站上的小视频。

核心代码

def get_json(url):
  headers = {
    'User-Agent':
      'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36'
  }

  params = {
    'page_size': 10,
    'next_offset': str(num),
    'tag': '今日热门',
    'platform': 'pc'
  }

  try:
    html = requests.get(url, params=params, headers=headers)
    return html.json()

  except BaseException:
    print('request error')
    pass

def download(url,path):
  start = time.time() # 开始时间
  size = 0
  headers = {
    'User-Agent': 
    'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36'
  }

  response = requests.get(url,headers=headers,stream=True) 
  chunk_size = 1024 
  content_size = int(response.headers['content-length']) 
  if response.status_code == 200:
    with open(path,'wb') as file:
      for data in response.iter_content(chunk_size=chunk_size):
        file.write(data)
        size += len(data)

成果展示

上一部分我们已经展示了如何用Python下载视频的方法,下面我们进行效果展示

Python如何实现爬取B站视频

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python中列表、字典、元组、集合数据结构整理
Nov 20 Python
python 异常处理总结
Oct 18 Python
Python利用字典将两个通讯录文本合并为一个文本实例
Jan 16 Python
python使用itchat实现手机控制电脑
Feb 22 Python
Python实现操纵控制windows注册表的方法分析
May 24 Python
对python中UDP,socket的使用详解
Aug 22 Python
Python threading的使用方法解析
Aug 28 Python
pytorch实现保证每次运行使用的随机数都相同
Feb 20 Python
Python 如何测试文件是否存在
Jul 31 Python
django inspectdb 操作已有数据库数据的使用步骤
Feb 07 Python
Python可变集合和不可变集合的构造方法大全
Dec 06 Python
python多线程方法详解
Jan 18 Python
django在开发中取消外键约束的实现
May 20 #Python
520使用Python实现“我爱你”表白
May 20 #Python
django 外键创建注意事项说明
May 20 #Python
在django admin中配置搜索域是一个外键时的处理方法
May 20 #Python
Python使用Paramiko控制liunx第三方库
May 20 #Python
解决django框架model中外键不落实到数据库问题
May 20 #Python
Django ForeignKey与数据库的FOREIGN KEY约束详解
May 20 #Python
You might like
php 类自动载入的方法
2015/06/03 PHP
CI框架整合widget(页面格局)的方法
2016/05/17 PHP
Laravel 6 将新增为指定队列任务设置中间件的功能
2019/08/06 PHP
通过实例解析PHP数据类型转换方法
2020/07/11 PHP
javascript 打印页面代码
2009/03/24 Javascript
JavaScript高级程序设计(第3版)学习笔记7 js函数(上)
2012/10/11 Javascript
JS对象转换为Jquery对象示例
2014/01/26 Javascript
Jquery原生态实现表格header头随滚动条滚动而滚动
2014/03/18 Javascript
javascript中2个感叹号的用法实例详解
2014/09/04 Javascript
JavaScript的removeChild()函数用法详解
2015/12/27 Javascript
拥Bootstrap入怀——导航栏篇
2016/05/30 Javascript
jQuery下拉框的简单应用
2016/06/24 Javascript
购物车前端开发(jQuery和bootstrap3)
2016/08/27 Javascript
JavaScript面试题(指针、帽子和女朋友)
2016/11/23 Javascript
手把手教你搭建ES6的开发运行环境
2017/07/11 Javascript
JavaScript中运算符规则和隐式类型转换示例详解
2017/09/06 Javascript
VueAwesomeSwiper在VUE中的使用以及遇到的一些问题
2018/01/11 Javascript
angular2路由之routerLinkActive指令【推荐】
2018/05/30 Javascript
轻松解决JavaScript定时器越走越快的问题
2019/05/13 Javascript
vue element-ui el-date-picker限制选择时间为当天之前的代码
2019/11/07 Javascript
JS时间戳与日期格式互相转换的简单方法示例
2021/01/30 Javascript
python抓取网页内容示例分享
2014/02/24 Python
深入理解Django的中间件middleware
2018/03/14 Python
对Python中列表和数组的赋值,浅拷贝和深拷贝的实例讲解
2018/06/28 Python
python中web框架的自定义创建
2019/09/08 Python
python3实现从kafka获取数据,并解析为json格式,写入到mysql中
2019/12/23 Python
Python图像处理库PIL的ImageEnhance模块使用介绍
2020/02/26 Python
tensorflow从ckpt和从.pb文件读取变量的值方式
2020/05/26 Python
python安装后的目录在哪里
2020/06/21 Python
Melijoe美国官网:法国奢侈童装购物网站
2017/04/19 全球购物
Mamas & Papas沙特阿拉伯:英国最受欢迎的婴儿品牌
2017/11/20 全球购物
阿迪达斯法国官方网站:adidas法国
2018/03/20 全球购物
工程开工庆典邀请函
2014/02/01 职场文书
公司员工活动策划方案
2014/08/20 职场文书
党旗在我心中演讲稿
2014/09/15 职场文书
Vue组件更新数据v-model不生效的解决
2022/04/02 Vue.js