使用 Python 下載 B 站視訊
本文的文字及圖片來源於網路,僅供學習、交流使用,不具有任何商業用途,,版權歸原作者所有,如有問題請及時聯絡我們以作處理
作者:某某白米飯 來源:Python技術 [公眾號ID:pythonall]
連結:https://juejin.cn/post/6913143976895709191
PS:如有需要Python學習資料的小夥伴可以加點選下方連結自行獲取
使用 Python 下載 B 站視訊
B 站,一個月活使用者達到 1.72 的視訊網站,有時候會因為某些未知的原因導致放入收藏夾的視訊失效,會了防止視訊被和諧、被失效,身為 Pythonista 來擼一個 B 站的視訊下載器
分析頁面
首先我們在 B 站點開一個視訊(https://www.bilibili.com/video/BV1Vh411Z7j5)用 F12 分析一波,在下圖中可以看到有多個 m4s 結尾的連結,並且響應的型別是 video/mp4
把皮膚打到 Elements 介面,找到一個 window.playinfo 的 javascript 變數,並且內容和上圖中的 url 類似,都是 m4s 連結,目標已找到
獲取標題和連結
抓取視訊頁面,並用 BeautifulSoup 模組解析頁面,獲取視訊標題和連結(https://www.bilibili.com/video/BV17K4y1x7gs)
def __init__(self, bv):
# 視訊頁地址
self.url = 'https://www.bilibili.com/video/' + bv
# 下載開始時間
self.start_time = time.time()
def get_vedio_info(self):
try:
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36'
}
response = requests.get(url = self.url, headers = headers)
if response.status_code == 200:
bs = BeautifulSoup(response.text, 'html.parser')
# 取視訊標題
video_title = bs.find('span', class_='tit').get_text()
# 取視訊連結
pattern = re.compile(r"window\.__playinfo__=(.*?)$", re.MULTILINE | re.DOTALL)
script = bs.find("script", text=pattern)
result = pattern.search(script.next).group(1)
temp = json.loads(result)
# 取第一個視訊連結
for item in temp['data']['dash']['video']:
if 'baseUrl' in item.keys():
video_url = item['baseUrl']
break
return {
'title': video_title,
'url': video_url
}
except requests.RequestException:
print('視訊連結錯誤,請重新更換')
複製程式碼
示例結果:
{
'title': '《屬於周杰倫的情歌王2.0》安安靜靜的回憶有杰倫陪伴的20年',
'url': 'http://cn-jszj-dx-v-06.bilivideo.com/upgcxcode/34/57/214635734/214635734_nb2-1-30080.m4s?expires=1595538100&platform=pc&ssig=Q5uom_rGdPasJhHBvna8tw&oi=3027480765&trid=347f5dc41e9647e2a6dce48286d0b478u&nfc=1&nfb=maPYqpoel5MI3qOUX6YpRA==&cdnid=2725&mid=0&cip=222.186.35.71&orderid=0,3&logo=80000000'
}
複製程式碼
下載視訊
下載視訊使用 urllib 模組的 urlretrieve(url, filename=None, reporthook=None) 方法,它可以將遠端資料直接下載到本地
def download_video(self, video):
title = re.sub(r'[\/:*?"<>|]', '-', video['title'])
url = video['url']
filename = title + '.mp4'
opener = urllib.request.build_opener()
opener.addheaders = [('Origin', 'https://www.bilibili.com'),
('Referer', self.url),
('User-Agent', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36')]
urllib.request.install_opener(opener)
urllib.request.urlretrieve(url = url, filename = filename)
複製程式碼
示例結果:
一個視訊下載完成
進度條
現在還缺一個進度條,沒有進度條的下載工具是一個沒有靈魂的下載工具
def schedule(self, blocknum, blocksize, totalsize):
'''
urllib.urlretrieve 的回撥函式
:param blocknum: 已經下載的資料塊
:param blocksize: 資料塊的大小
:param totalsize: 遠端檔案的大小
:return:
'''
percent = 100.0 * blocknum * blocksize / totalsize
if percent > 100:
percent = 100
s = ('#' * round(percent)).ljust(100, '-')
sys.stdout.write("%.2f%%" % percent + '[ ' + s +']' + '\r')
sys.stdout.flush()
複製程式碼
示例結果
最後更新一下下載視訊的程式碼,加入 reporthook 引數
urllib.request.urlretrieve(url = url, filename = filename, reporthook = self.schedule)
複製程式碼
總結
簡單的一個 B 站視訊下載工具到這就完成了,有興趣的話大夥可以試試下載 B 站的番劇,似乎和普通的視訊不一樣
相關文章
- 使用 cURL 函式下載B站字幕函式
- 下載b站影片並生成音訊字幕音訊
- 用 Laravel 做了一個視訊下載站Laravel
- B站試水互動視訊
- 使用RoboBrowser和Python下載音訊Python音訊
- bilibili動畫下載視訊批量改名(python)動畫Python
- 【玩具】獲取B站視訊的音訊片段音訊
- 推薦4個國外線上視訊下載網站,YouTube、vimeo、推特視訊網站!網站
- mac使用者如何下載YouTube視訊?Mac
- 使用python 下載m3u8格式視訊,併合成Python
- 多執行緒爬取B站視訊執行緒
- Bilidown(B站影片下載工具) v1.1.5
- B站互動視訊的“野蠻生長”
- Android 視訊教程下載Android
- VidiCable 視訊下載工具
- 視訊下載終極利器!簡單粗暴,支援全網視訊下載!
- 爬取B站視訊播放量及資料視覺化視覺化
- 基於python對B站收藏夾按照視訊釋出時間進行排序Python排序
- ffmpeg+Python實現B站MP4格式音訊與視訊的合併Python音訊
- Downie 4視訊下載軟體 Mac最好用的視訊下載軟體Mac
- 如何下載知乎視訊
- 2021年B站品牌營銷手冊(附下載)
- B站:2020美護行業通案(附下載)行業
- 抖音視訊批量下載,手把手教你下載抖音無水印視訊
- 阿里雲伺服器使用視訊教程免費下載阿里伺服器
- 文旅部執法檢查B站、抖音等27家網站:下線動漫視訊977條網站
- Weblogic 視訊教程免費下載Web
- Quartz 視訊教程免費下載quartz
- Spark視訊教程免費下載Spark
- ElasticSearch 視訊教程免費下載Elasticsearch
- AceThinker Video Keeper 視訊下載工具IDE
- 視訊素材找不到?這4個網站,30萬+素材免費下載網站
- Python爬取動態載入的視訊(梨視訊,xpath)Python
- B站英文教學視訊的字幕獲取 學習必看!
- ubuntu下firefox使用HTML 5播放器看B站UbuntuFirefoxHTML播放器
- 視訊號:騰訊短視訊戰場新價值(附下載)
- 文旅部點名鬥魚和B站:處理問題直播,下線違規視訊
- 給大家介紹一個 B站 抖音 影片下載神器