本系列文章旨在分享python学习的心得,所涉及的视频和up主皆是值得与大家分享的,如有冒犯,望请谅解。
本期任务:使用Python下载B站大佬投稿页所有视频
【Python】第3节:Beautifulsoup+requests+selenium获取视频url
【Python】第4节:常见问题的解决(2020年3月23日哔哩哔哩将稿件的「av 号」变更为「BV 号」)
完整GitHub代码:BilibiliDownloader
哔哩哔哩高手云集,各路技术大牛十分活跃,比如:莫烦大佬,CodeSheep,。。。
大佬们的视频精彩,不收藏一些到本地岂不可惜?
网上有不少教程,教你如何下载B站视频,我分享总结了两种比较靠谱的方法分享给大家,希望能帮到大家。
攻略1:哔哩哔哩视频下载器
操作简单,无需安装,完全免费
打开之后,直接输入视频地址和保存位置,
点击解析,选中视频,右键即可下载。
下载速度很ok,一般能达到一般以上的带宽!!!
缺点:
- 下载数量比较多时,容易崩,稳定性不大好!
- 只能下载给定url的全部视频
下载途径:
- BiliBili视频下载工具(自动合并)
- 备用:网盘链接: https://pan.baidu.com/s/1qNPFT7GWyunLbuVpHp-NmA 提取码: 3yd2
攻略2:you-get
完整代码
import os
import sys
import you_get
class YouGet():
def __init__(self, path):
self.path = path # 存放视频文件的路径
def rmfile(self, path):
"""
删除文件
:param path: 文件路径
:return: None
"""
try:
os.remove(path)
except Exception as e:
print(e)
def download(self, url):
sys.argv = ['you-get', '-o', self.path, url]
you_get.main()
# 下载完成,删除xml文件
for file in os.listdir(self.path):
if file[-3:] == 'xml':
self.rmfile(os.path.join(self.path, file))
if __name__ == "__main__":
path = r"视频存放路径"
url = ["待下载的视频列表"]
yg = YouGet(path)
for url in urls:
yg.download(url)
核心部分讲解
注:请确保已安装配置好python环境和you-get(第三方库)
YouGet类:
- rmfile():you-get每下载完成一个视频,便会产生一个xml文件,rmfile()负责在下载完成后删除它。
def rmfile(self, path):
"""
删除文件
:param path: 文件路径
:return: None
"""
try:
os.remove(path)
except Exception as e:
print(e)
- download():输入url,you_get将开启下载工作,控制台可以看到实时的下载进度。下载完成,调用rmfile()删除xml文件
def download(self, url):
sys.argv = ['you-get', '-o', self.path, url]
you_get.main()
# 下载完成,删除xml文件
for file in os.listdir(self.path):
if file[-3:] == 'xml':
self.rmfile(os.path.join(self.path, file))
效果图
未完待续。。。
本节只使用了一个python进程,对CPU和带宽的利用率很低,下一篇我们将解决这个问题。
【Python】哔哩哔哩视频下载第2篇:进程池的应用