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中wx将图标显示在右下角的脚本代码
Mar 08 Python
使用Python开发windows GUI程序入门实例
Oct 23 Python
Python的mysql数据库的更新如何实现
Jul 31 Python
Python使用matplotlib绘制正弦和余弦曲线的方法示例
Jan 06 Python
python 通过可变参数计算n个数的乘积方法
Jun 13 Python
python3字符串操作总结
Jul 24 Python
python django model联合主键的例子
Aug 06 Python
Django 查询数据库并返回页面的例子
Aug 12 Python
10个Python面试常问的问题(小结)
Nov 20 Python
python 使用raw socket进行TCP SYN扫描实例
May 05 Python
Python 制作查询商品历史价格的小工具
Oct 20 Python
Python可视化神器pyecharts绘制水球图
Jul 07 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 Curl多线程原理实例详解
2013/11/06 PHP
php中cookie的使用方法
2014/03/29 PHP
ThinkPHP CURD方法之limit方法详解
2014/06/18 PHP
PHP利用Cookie设置用户30分钟未操作自动退出功能
2017/07/03 PHP
js和jquery中循环的退出和继续下一个循环
2014/09/03 Javascript
原生js三级联动的简单实现代码
2016/06/07 Javascript
BootStrap入门教程(二)之固定的内置样式
2016/09/19 Javascript
微信小程序 picker 组件详解及简单实例
2017/01/10 Javascript
微信小程序 wx.login解密出现乱码的问题解决办法
2017/03/10 Javascript
gulp安装以及打包合并的方法教程
2017/11/19 Javascript
vue加载完成后的回调函数方法
2018/09/07 Javascript
mpvue性能优化实战技巧(小结)
2019/04/17 Javascript
jQuery层叠选择器用法实例分析
2019/06/28 jQuery
React路由鉴权的实现方法
2019/09/05 Javascript
使用kbone解决Vue项目同时支持小程序问题
2019/11/08 Javascript
[01:11]辉夜杯战队访谈宣传片—CDEC.Y
2015/12/26 DOTA
python编码最佳实践之总结
2016/02/14 Python
Python 基于Twisted框架的文件夹网络传输源码
2016/08/28 Python
Python判断变量是否为Json格式的字符串示例
2017/05/03 Python
Python操作MySQL数据库的三种方法总结
2018/01/30 Python
DataFrame 将某列数据转为数组的方法
2018/04/13 Python
使用PIL(Python-Imaging)反转图像的颜色方法
2019/01/24 Python
Python Opencv中用compareHist函数进行直方图比较对比图片
2020/04/07 Python
python实时监控logstash日志代码
2020/04/27 Python
Python实现读取并写入Excel文件过程解析
2020/05/27 Python
基于Python编写一个计算器程序,实现简单的加减乘除和取余二元运算
2020/08/05 Python
html5将图片转换成base64的实例代码
2016/09/21 HTML / CSS
HealthElement海外旗舰店:新西兰大卖场
2018/02/23 全球购物
捷克原创男装和女装购物网站:Bolf.cz
2018/04/28 全球购物
加拿大户外探险购物网站:SAIL
2020/06/27 全球购物
班长岗位职责
2013/11/10 职场文书
网络管理员岗位职责
2014/03/17 职场文书
中学生英语演讲稿
2014/04/26 职场文书
企业整改报告范文
2014/11/08 职场文书
话题作文之生命的旋律
2019/12/17 职场文书
彩虹社八名人气艺人全新周边限时推出,性转女装男装一次拥有!
2022/04/01 日漫