本文的文字及圖片來源于網路,僅供學習、交流使用,不具有任何商業用途,著作權歸原作者所有,如有問題請及時聯系我們以作處理
一、前言
B站是國內知名的視頻彈幕網站,有最及時的動漫新番,ACG氛圍,最有創意的Up主,站點中的視頻資料分成了視頻畫面和音頻資料,
今天帶大家下載以及合并B站的視頻,
二、所用到得庫
import requests import re # 正則運算式 import pprint import json import subprocess
三、環境配置
python 3.6
pycharm
requests
re
json
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'} def send_request(url): """請求資料""" response = requests.get(url=url, headers=headers) return response def get_video_data(html_data): """決議視頻資料""" # 提取視頻的標題 title = re.findall('<span >(.*?)</span>', html_data)[0] # print(title) # 提取視頻對應的json資料 json_data = https://www.cnblogs.com/aa1273935919/p/re.findall('<script>window\.__playinfo__=(.*?)</script>', html_data)[0] # print(json_data) # json_data 字串 json_data =https://www.cnblogs.com/aa1273935919/p/ 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 def save_data(file_name, audio_url, video_url): # 請求資料 print('正在請求音頻資料') audio_data = send_request(audio_url).content print('正在請求視頻資料') 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('正在保存視頻資料')
五、資料合并:
def merge_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) html_data = send_request('https://www.bilibili.com/video/BV1Sa4y1H7cy').text # print(html_data) video_data = get_video_data(html_data) save_data(video_data[0], video_data[1], video_data[2]) merge_data(video_data[0])
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/236940.html
標籤:Python
