通过you-get模块来实现对哔哩哔哩视频的下载,you-get 模块需要自己下载,在控制台输入
pip3 install you-get 即可下载,下载完成后输入you-get --help即可检验
安装后输出如上图
代码如下
import os
import re
import subprocess
def menu(quality):
for i in range(len(quality)):
print(i,quality[i])
return int(input('请选择清晰度'))
def capture_cmd_output(command):
# 执行CMD命令,并将标准输出和错误输出保存到变量中
process = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
output, error = process.communicate()
# 将输出内容转换为字符串类型,并去除末尾的换行符
output = output.decode().rstrip()
error = error.decode().rstrip()
return output, error
# 示例命令,执行dir命令查看当前目录下的文件列表
url = input('请输入视频链接')
cmd = f'you-get -i "{url}"'
# 执行命令并获取输出和错误信息
output, error = capture_cmd_output(cmd)
# 输出结果
print("获取到的CMD输出内容:")
if output:
pass
if error:
print("错误信息:", error)
output = output.replace('\r','')
print(output)
# 清晰度
quality = re.findall('quality: (.*?)\n',output)
# 下载格式以及清晰度
data = re.findall('(--format=.*?) ',output)
# 视频格式
container = re.findall('container: (.*?)\n',output)
# 视频标题
title = re.findall('title: (.*?)\n',output)[0]
title = title
n = menu(quality)
if not os.path.exists('电影'):
os.mkdir('电影')
commod = f'you-get --no-caption -o 电影 -O {title} {data[n]} {url}'
# 下载视频
os.system(commod)
在代码中,我使用subprocess模块来实现抓取控制台输出的功能,通过此模块来实现下载视频清晰度的选择
此代码也可以实现对爱奇艺以及优酷等视频的下载,但是无法下载vip视频,如果想要下载vip视频则需要在代码中添加登录后的cookie,否则无法下载vip视频
此外,如果无法下载的话可能是需要安装ffmpeg软件,具体如何安装在之前的博客里