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 参数列表中的self 显式不等于冗余
Dec 01 Python
Python实现多进程共享数据的方法分析
Dec 04 Python
详解python Todo清单实战
Nov 01 Python
更新pip3与pyttsx3文字语音转换的实现方法
Aug 08 Python
Django Admin中增加导出CSV功能过程解析
Sep 04 Python
django多种支付、并发订单处理实例代码
Dec 13 Python
Python实现桌面翻译工具【新手必学】
Feb 12 Python
浅谈python输出列表元素的所有排列形式
Feb 26 Python
keras中epoch,batch,loss,val_loss用法说明
Jul 02 Python
python如何获得list或numpy数组中最大元素对应的索引
Nov 16 Python
Django扫码抽奖平台的配置过程详解
Jan 14 Python
python如何做代码性能分析
Apr 26 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.ini修改php上传文件大小限制的方法详解
2013/06/17 PHP
将二维数组转为一维数组的2种方法
2014/05/26 PHP
PHP中Session和Cookie是如何操作的
2015/10/10 PHP
php 如何设置一个严格控制过期时间的session
2017/05/05 PHP
php实现表单提交上传文件功能
2018/05/28 PHP
javascript之函数直接量(function(){})()
2007/06/29 Javascript
Javascript 篱式条件判断
2008/08/22 Javascript
jQuery中使用了document和window哪些属性和方法小结
2011/09/13 Javascript
引用外部js乱码问题分析及解决方案
2013/04/12 Javascript
JavaScript中实现最高效的数组乱序方法
2014/10/11 Javascript
js+HTML5基于过滤器从摄像头中捕获视频的方法
2015/06/16 Javascript
用Move.js配合创建CSS3动画的入门指引
2015/07/22 Javascript
JS实现的论坛Ajax打分效果完整实例
2015/10/31 Javascript
利用Javascript仿Excel的数据透视分析功能
2016/09/07 Javascript
javascript的函数劫持浅析
2016/09/26 Javascript
Angular学习笔记之angular的$filter服务浅析
2016/11/12 Javascript
layui table设置前台过滤转义等方法
2018/08/17 Javascript
vue实现购物车选择功能
2020/01/10 Javascript
vue制作抓娃娃机的示例代码
2020/04/17 Javascript
jQuery实现计算器功能
2020/10/19 jQuery
用vue写一个日历
2020/11/02 Javascript
Python递归实现汉诺塔算法示例
2018/03/19 Python
python+pandas分析nginx日志的实例
2018/04/28 Python
python实现根据指定字符截取对应的行的内容方法
2018/10/23 Python
在Python中给Nan值更改为0的方法
2018/10/30 Python
Python中一般处理中文的几种方法
2019/03/06 Python
基于jupyter代码无法在pycharm中运行的解决方法
2020/04/21 Python
浅析Python模块之间的相互引用问题
2021/02/26 Python
New Balance美国官网:运动鞋和健身服装
2017/04/11 全球购物
世界上最大的在线学习和教学市场:Udemy
2017/11/08 全球购物
瑞士领先的网上超市:LeShop.ch
2018/11/14 全球购物
Hoka One One法国官网:美国专业跑鞋品牌
2018/12/29 全球购物
人民检察院起诉书
2015/05/20 职场文书
开工典礼致辞
2015/07/29 职场文书
OpenCV 图像梯度的实现方法
2021/07/25 Python
Python+DeOldify实现老照片上色功能
2022/06/21 Python