Python如何实现爬取B站视频
作者:Python学习交流 发布时间:2021-10-09 07:46:04
5月3日晚,央视在《新闻联播》前播放了B站青年宣言片《后浪》,这是B站首次登陆央视黄金时段,今天在朋友圈陆续看到相关的视频。最早用B站的同学都知道,B站是和A站以异曲同工的鬼畜视频及动漫,进入到大众视野的非主流视频网站。哔哩哔哩现为国内领先的年轻人娱乐、文化社区,该网站于2009年6月26日创建,被粉丝们亲切的称为“B站”。
B站之所以火,是因为趣味与知识并存。它是一个重度宅腐二次元集结地。B站包含动漫、漫画、游戏,也有很多由繁到简、五花八门的视频,很多冷门的软件和绘画技巧在B站都可以找到完整的教学视频。正如一句“你在B站看番,我在B站学习”,B站还是有一些质量比较好的学习视频。当你在B站上看到喜欢的视频想保存下来时,怎么办呢?
转入正题,本篇推文主要介绍如何将B站上把喜欢的视频下载下来,帮助更多需要学习的小伙伴,详细步骤如下:
网页分析
视频下载方法
成果展示
微信视频号的加入,再度引燃了短视频领域,今天我们爬取B站的每天播放量最多的小视频,其他类型的视频可以参考这个方法。
网页分析
网址为:
'http://vc.bilibili.com/p/eden/rank#/?tab=全部'
我们可以看到Request URL这个属性值,我们向下滑动加载视频的过程中,发现只有这段url是不变的。next_offset 会一直变化,我们可以猜测,这个可能就是获取下一个视频序号,我们只需要把这部分参数取出来,把 next_offset 写成变量值,用 JSON 的格式返回到目标网页即可。
视频下载方法
上一部分已对网页进行了分析,现在我们可以利用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下载视频的方法,下面我们进行效果展示
来源:https://www.cnblogs.com/shannian999/p/12910947.html
猜你喜欢
- 本篇文档旨在介绍如何安装配置基于2台服务器的MySQL集群。并且实现任意一台服务器出现问题或宕机时MySQL依然能够继续运行。注意!虽然这是
- 这篇文章主要介绍了python lambda表达式(匿名函数)写法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学
- python的正则是通过re模块的支持匹配的3个函数match :只从字符串的开始与正则表达式匹配,匹配成功返回matchobject,否则
- 本文实例讲述了Python基于有道实现英汉字典功能的方法。分享给大家供大家参考。具体如下:import re,urllibaa="
- requests是一个python 轻量的http客户端库,相比python的标准库要优雅很多。接下来通过本文给大家介绍Python3使用r
- Python是一种解释型、面向对象、动态数据类型的高级程序设计语言。Python由Guido van Rossum于 * 底发明,第一个
- 1、给滚动条换色 好多网站的滚动条不是系统默认的灰色,而是一些红色、蓝色的,请问这是如何做的?答:这个很好实现,插入下面的代码:<&n
- 1. 前言。1.1. 需求背景。 每天抓取的是同一份商品的数据,用来做趋势分析。要求每天都需要抓一份,也仅限抓取一份数据。但是整个
- 虽然说标题将的是首页的访问感受,但是同样适合于网站其它页面的用户体验设计,一个好的网站设计应当尽量做到首页和次页一视同仁。第一步(视觉设计)
- 目录1.引言2.获取目标网站3.爬取目标网站4.解析爬取内容4.1. 解析全国今日总况4.2. 解析全国各省份疫情情况4.3. 解析江苏各地
- 首先,我们需要着重介绍一些概念,以给你提供一些使这个“奇迹”得以发生的组成部分。太轻易地泄露伏笔对于讲故事来说不是个好的形式,所以那些不愿意
- 一、创建堆heapq有两种方式创建堆, 一种是使用一个空列表,然后使用heapq.heappush()函数把值加入堆中,另外一种就是使用he
- 检测这些圆,先找轮廓后通过轮廓点拟合椭圆import cv2import numpy as npimport matplotlib.pypl
- 一、基础介绍Go 是静态(编译型)语言,是区别于解释型语言的弱类型语言(静态:类型固定,强类型:不同类型不允许直接运算)例如 python
- 前言:在搭建开始前,我们先来梳理下web服务工作流程,先看下图:1、用户(PC)向web服务器发起http请求2、web服务器判断用户请求文
- if xxx 和if xxx is None的区别一、 if xxxNone,’’,0,[],{},
- 变量(variable)是Python语言中一个非常重要的概念。变量的主要作用就是为Python程序中的某个值起一个名字。类似于“张三”、“
- 这是一个系列文章,主要分享python的使用建议和技巧,每次分享3点,希望你能有所收获。1 如何打印更易读的类不推荐方式class Poin
- 杨辉三角,是二项式系数在三角形中的一种几何排列每个数等于它上方两数之和。每行数字左右对称,由1开始逐渐变大。第n行的数字有n项。第n行数字和
- 阅读上一篇教程:WEB2.0网页制作标准教程(10)自适应高度布局初步搭建起来,我开始填充里面的内容。首先是定义logo图片:样式表:#lo