用python下载B站的视频

两年前初学爬虫,写了这篇博客——用python爬取B站视频,今天再看当时的代码,很繁杂,有些地方可以简化,所以又补充这篇博客,希望对大家有用。

由于B站对视频资源的保护策略,每一个视频的画面和声音数据是分开存放的,下载之后必须要使用其他工具来合并,我推荐ffmpeg。(下载安装教程

下面是完整的python代码,复制后保存为python文件运行即可。

 1 # -*- coding: utf-8 -*-
 2 import requests
 3 import re
 4 import json
 5 
 6 #step1 获取源码
 7 url = input('输入该视频的有效链接地址:')
 8 head = {
 9               'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36 Edg/91.0.864.67',
10               'Referer':url } # 这两个参数缺一不可
11 resp = requests.get(url, headers=head)
12 
13 #step2 提取标题
14 title = re.findall('<h1.*>(.*?)</h1>',resp.text)[0]
15 print('>>>标题:',title)
16 
17 #step3 获取音频和视频
18 json_data = re.findall('<script>window.__playinfo__=(.*?)</script>', resp.text)[0]
19 json_data = json.loads(json_data)
20 
21 audio_url = json_data['data']['dash']['audio'][0]['backupUrl'][0]
22 audio_data = requests.get(audio_url,headers=head)
23 with open(title+'.mp3', mode='wb') as f:
24     f.write(audio_data.content)
25 print('>>>音频下载完成')
26 
27 video_url = json_data['data']['dash']['video'][0]['backupUrl'][0]
28 video_data = requests.get(video_url,headers=head)
29 with open(title+'.mp4', mode='wb') as f:
30     f.write(video_data.content)
31 print('>>>视频下载完成')

下面是一个使用示例,下载好的音频和视频保存在你存放该程序的文件夹里。

 注意:

1.requests库如果没有安装,那就先安装。(打开cmd,输入pip install requests)

2.下载的包括一个音频和一个视频,要自己用ffmpeg合并。

使用举例:

1)在包含文件“爱(原创MV).mp3”和“爱(原创MV).mp4”的文件夹上方输入cmd再确认 

ps: 建议先把文件名改的简单一点,有些视频标题太长,不便于输入

2)在cmd里按照这个格式输入: ffmpeg      -i 音频文件名      -i 视频文件名       合并后的文件名

ps: ffmpeg安装好后记得加入环境变量。如果运行时仍然提示“ffmpeg不是系统内部或外部的命令”,重启一下电脑即可。

 3)回到文件夹,你就可以看到合并完成的文件,这就是你要下载的B站视频。

 

最后,希望这篇博客能帮到你,欢迎和我交流。(邮箱2929837385@qq.com,博客不常看)

 

posted @ 2024-03-04 19:27  惊虹  阅读(2569)  评论(1)    收藏  举报