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编程通过蒙特卡洛法计算定积分详解
Dec 13 Python
python装饰器深入学习
Apr 06 Python
Python 从相对路径下import的方法
Dec 04 Python
解决pycharm的Python console不能调试当前程序的问题
Jan 20 Python
python实现栅栏加解密 支持密钥加密
Mar 20 Python
python用线性回归预测股票价格的实现代码
Sep 04 Python
tensorflow入门:TFRecordDataset变长数据的batch读取详解
Jan 20 Python
Python类和实例的属性机制原理详解
Mar 21 Python
python递归函数求n的阶乘,优缺点及递归次数设置方式
Apr 02 Python
使用keras实现孪生网络中的权值共享教程
Jun 11 Python
python代码能做成软件吗
Jul 24 Python
Python requests上传文件实现步骤
Sep 15 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 socket(fsockopen)的应用实例分析
2013/06/02 PHP
php封装的图片(缩略图)处理类完整实例
2016/10/19 PHP
PHP实现一个按钮点击上传多个图片操作示例
2020/01/23 PHP
php字符串函数 str类常见用法示例
2020/05/15 PHP
一个很简单的jquery+xml+ajax的无刷新树结构(无css,后台是c#)
2010/06/02 Javascript
浅谈JavaScript中Date(日期对象),Math对象
2015/02/05 Javascript
JQuery datepicker 用法详解
2015/12/25 Javascript
使用ajaxfileupload.js实现上传文件功能
2016/08/13 Javascript
jQuery实现动态删除LI的方法
2017/05/30 jQuery
JavaScript阻止表单提交方法(附代码)
2017/08/15 Javascript
Vue2 轮播图slide组件实例代码
2018/05/31 Javascript
layui点击弹框页面 表单请求的方法
2019/09/21 Javascript
vue实现二级导航栏效果
2019/10/19 Javascript
javascript 原型与原型链的理解及实例分析
2019/11/23 Javascript
通过javascript实现扫雷游戏代码实例
2020/02/09 Javascript
Python入门及进阶笔记 Python 内置函数小结
2014/08/09 Python
Python3 replace()函数使用方法
2018/03/19 Python
OpenCV+python手势识别框架和实例讲解
2018/08/03 Python
python pexpect ssh 远程登录服务器的方法
2019/02/14 Python
Python数据可视化:幂律分布实例详解
2019/12/07 Python
关于TensorFlow新旧版本函数接口变化详解
2020/02/10 Python
python 安装impala包步骤
2020/03/28 Python
Jupyter Notebook输出矢量图实例
2020/04/14 Python
CSS3只让背景图片旋转180度的实现示例
2021/03/09 HTML / CSS
欧洲有机婴儿食品最大的市场:Organic Baby Food(供美国和加拿大)
2018/03/28 全球购物
微软中国官方商城:Microsoft Store中国
2018/10/12 全球购物
SQL中where和having的区别
2012/06/17 面试题
护理学中专毕业生求职信
2013/11/11 职场文书
《浅水洼里的小鱼》听课反思
2014/02/28 职场文书
国庆节促销广告语2014
2014/09/19 职场文书
2014年财务工作自我评价
2014/09/23 职场文书
出纳岗位职责
2015/01/31 职场文书
初二数学教学反思
2016/02/17 职场文书
工作转正自我鉴定范文
2019/06/21 职场文书
python tkinter模块的简单使用
2021/04/07 Python
pytorch显存一直变大的解决方案
2021/04/08 Python