【思路】
1.下載文件用requests庫最方便,因?yàn)榭梢垣@取錯(cuò)誤碼,可以自定義保存文件名,且不用判斷文件是否已經(jīng)下載完成。
2.解析需要下載的地址,得到視頻和音頻文件下載地址
3.合成視頻和音頻,得到最終mp4文件。
本次涉及視頻操作,故需要安裝如下庫:
pip install requests moviepy
【范例代碼】
import requests import json import re from moviepy.video.io.VideoFileClip import VideoFileClip from moviepy.audio.io.AudioFileClip import AudioFileClip def get_bilibili_video_url(url): headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3' } response = requests.get(url, headers=headers) html = response.text # 使用正則表達(dá)式提取視頻信息 match_result = re.search(r'__playinfo__=(.*?)</script>', html) if match_result: play_info_str = match_result.group(1) play_info_dict = json.loads(play_info_str) # 獲取視頻下載鏈接 dash_info = play_info_dict['data']['dash'] video_info = dash_info['video'][0] audio_info = dash_info['audio'][0] video_url = video_info['base_url'] audio_url = audio_info['base_url'] return video_url, audio_url else: raise Exception('無法解析視頻信息') # 示例使用: bilibili_url = "https://www.bilibili.com/video/BV17w411C7M8" video_url, audio_url = get_bilibili_video_url(bilibili_url) print("B站視頻下載地址:", video_url) print("B站音頻下載地址:", audio_url) # 下載視頻和音頻 video_content = requests.get(video_url).content audio_content = requests.get(audio_url).content # 保存視頻和音頻到本地文件 with open('video.mp4', 'wb') as f: f.write(video_content) with open('audio.mp3', 'wb') as f: f.write(audio_content) # 加載視頻和音頻,合并為一個(gè)MP4文件 video_clip = VideoFileClip('video.mp4') audio_clip = AudioFileClip('audio.mp3') final_video_clip = video_clip.set_audio(audio_clip) final_video_clip.write_videofile('final.mp4') print("合并完成,輸出文件:final.mp4")
【執(zhí)行效果】
見下圖。
播放最終下載視頻效果,如下:
文章來源:http://www.zghlxwxcb.cn/news/detail-776150.html
【發(fā)文章不易,請(qǐng)多多點(diǎn)贊、關(guān)注、支持!】文章來源地址http://www.zghlxwxcb.cn/news/detail-776150.html
到了這里,關(guān)于python爬蟲練習(xí)系列之二:下載B站視頻的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!