python b站视频_Python爬取B站视频,只需一个B站视频地址,即可任意下载

前言

本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理。

B站是国内知名的视频弹幕网站,有最及时的动漫新番,ACG氛围,最有创意的Up主。站点中的视频数据分成了视频画面和音频数据。

今天带大家下载以及合并B站的视频。

b068c735f48e1764a1327d01414c97ab.png

Python 数据分析入门案例讲解

https://www.bilibili.com/video/BV1LX4y1u7VA

python b站视频_Python爬取B站视频,只需一个B站视频地址,即可任意下载_第1张图片

环境介绍:

python 3.6

pycharm

requests

re

json

subprocess

解析网页

目标网页分析

ce3f00652c7010c5dd4940a8c074dbd4.png

c025ae97216e86cfdb5539ef1775cf23.png

B站的视频和音频是分开的,音频url和视频url都在 里面

提取数据

1、正则匹配提取数据

2、正则提取出数据为一个列表,通过列表取值,取出

3、字符串转json数据

4、通过字典取值的方式,提取视频url以及音频url

cbafd35a055f49590a88a964065bdabb.png

爬虫代码

导入工具

importrequestsimport re #正则表达式

importpprintimportjsonimport subprocess

请求头

headers ={'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.105 Safari/537.36'}

请求数据

defsend_request(url):

response= requests.get(url=url, headers=headers)return response

解析视频数据

defget_video_data(html_data):"""解析视频数据"""

#提取视频的标题

title = re.findall('(.*?)', html_data)[0]#print(title)

#提取视频对应的json数据

json_data = re.findall('', html_data)[0]#print(json_data) # json_data 字符串

json_data =json.loads(json_data)

pprint.pprint(json_data)#提取音频的url地址

audio_url = json_data['data']['dash']['audio'][0]['backupUrl'][0]print('解析到的音频地址:', audio_url)#提取视频画面的url地址

video_url = json_data['data']['dash']['video'][0]['backupUrl'][0]print('解析到的视频地址:', video_url)

video_data=[title, audio_url, video_url]return video_data

保存数据

defsave_data(file_name, audio_url, video_url):#请求数据

print('正在请求音频数据')

audio_data=send_request(audio_url).contentprint('正在请求视频数据')

video_data=send_request(video_url).content

with open(file_name+ '.mp3', mode='wb') as f:

f.write(audio_data)print('正在保存音频数据')

with open(file_name+ '.mp4', mode='wb') as f:

f.write(video_data)print('正在保存视频数据')

数据的合并

defmerge_data(video_name):print('视频合成开始:', video_name)#ffmpeg -i video.mp4 -i audio.wav -c:v copy -c:a aac -strict experimental output.mp4

COMMAND = f'ffmpeg -i {video_name}.mp4 -i {video_name}.mp3 -c:v copy -c:a aac -strict experimental output.mp4'subprocess.Popen(COMMAND, shell=True)print('视频合成结束:', video_name)

效果图

3568ab09a5b044c8ed31dc2d7aaf126d.png

1a92531e10433d184216ca2f23fa063e.png

合并视频与音频

这里使用到一个工具,FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。

下载之后解压即可,但是需要你设置环境变量。

1、我的电脑,鼠标右键点击属性

2、选择系统高级设置

fa273eb8ded0da8cf36144c3d3dee28f.png

3、选择环境变量

fa1c955237b55b54a32dbf3fa5ccadef.png

4、添加环境变量,复制文件路径,选择新建添加即可

166e60f6f56cbc482a15806d2c5a7f43.png

你可能感兴趣的:(python,b站视频)