前言
本文的文字及圖片來源于網路,僅供學習、交流使用,不具有任何商業用途,如有問題請及時聯系我們以作處理,
B站是國內知名的視頻彈幕網站,有最及時的動漫新番,ACG氛圍,最有創意的Up主,站點中的視頻資料分成了視頻畫面和音頻資料,
今天帶大家下載以及合并B站的視頻,
Python 資料分析入門案例講解
https://www.bilibili.com/video/BV1LX4y1u7VA
環境介紹:
- python 3.6
- pycharm
- requests
- re
- json
- subprocess
決議網頁
目標網頁分析
B站的視頻和音頻是分開的,音頻url和視頻url都在<script>window.__playinfo__=</script> 里面
提取資料
1、正則匹配提取資料
2、正則提取出資料為一個串列,通過串列取值,取出
3、字串轉json資料
4、通過字典取值的方式,提取視頻url以及音頻url
爬蟲代碼
匯入工具
import requests import re # 正則運算式 import pprint import json import 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/hhh188764/p/re.findall('<script>window\.__playinfo__=(.*?)</script>', html_data)[0] # print(json_data) # json_data 字串 json_data =https://www.cnblogs.com/hhh188764/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)
效果圖
合并視頻與音頻
這里使用到一個工具<ffmpeg>,FFmpeg是一套可以用來記錄、轉換數字音頻、視頻,并能將其轉化為流的開源計算機程式,
下載之后解壓即可,但是需要你設定環境變數,
1、我的電腦,滑鼠右鍵點擊屬性
2、選擇系統高級設定
3、選擇環境變數
4、添加環境變數,復制檔案路徑,選擇新建添加即可
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/236942.html
標籤:Python
