拿着電腦,最怕的就是沒有網絡了,想學習什麼都不方便,就只能拿它來防身了。當嗶哩嗶哩作爲一個免費超級學習網站,上面的教程簡直是太棒了,何不把上面的視頻下載下來做爲教程了,這樣害怕沒有學習資源嗎?找個網好的地方,一起來爲沒有網絡做準備吧,以後不需要網也是可以敲代碼的~
明確目標: 嗶哩嗶哩的視頻
工具: python + you-get
python就不用我說了,如果不認識you-get這個視頻下載神器,請移步官網:https://pypi.org/project/you-get/0.3.25/
you-get基礎
1、安裝you-get
- win+ R,輸入cmd進入控制檯,使用
pip install you-get
安裝you-get。
2、查看視頻信息
- 在控制檯輸入
you-get -i 視頻鏈接
,如:
you-get -i https://www.bilibili.com/video/av51238267?p=1
- 現在我選擇第一個分辨率的格式進行下載
you-get --format=dash-flv https://www.bilibili.com/video/av51238267?p=1
- 這樣就下載好了,文件默認保存在當前路徑,現在的路徑爲計算機用戶名路徑下。
- 其中還包含了該視頻的彈幕也被下載下來了。
3、更改下載路徑
- 在參數中帶上下載的路勁,它就自動下載到相應的地方了
- 路徑參數爲:
- o 路徑
you-get -o F://bilibili --format=dash-flv https://www.bilibili.com/video/av51238267?p=1
python+you-get實現批量化下載
- 如果要下載的視頻數量很大,一個一個的下載就不是我們碼農該完成的任務,我們重來不去做重複的事,這些事呢就交給計算機去完成吧!
1、單線程下載
- 推薦使用它
import you_get
import os
import time
stime = time.time()
urlList = []
def getMp4(path,urlList):
cmd_list = []
for url in urlList:
cmds = 'you-get -o %s --format=dash-flv %s'%(path,url)
cmd_list.append(cmds)
for count,each in enumerate(cmd_list):
startTime = time.time()
print("當前正在下載第%s個視頻,一共有%s個視頻需要下載..."%(count+1,len(cmd_list)))
os.system(each)
endtime = time.time()
useTime = (endtime-startTime)
print ("您所下載的視頻一共使用%s秒"%useTime)
def make_page():
for p in range(100,118,1):
url = "https://www.bilibili.com/video/av51238267?p=%s"%p
urlList.append(url)
if __name__ == '__main__':
make_page()
path = "F:\\數據分析\\OpenCV+TensorFlow入門人工智能圖像處理"
getMp4(path,urlList)
etime = time.time()
utime = (etime-stime)/60
print ("您所下載的全部視頻一共使用%s分鐘"%utime)
2、多線程下載
- 並不建議去使用多線程下載,它的速度主要還是與網速有關,不關線程的事
import you_get
import os
import time
import threading
stime = time.time()
urlList = []
cmd_list = []
def getMp4(path,urlList):
for url in urlList:
cmds = 'you-get -o %s --format=dash-flv %s'%(path,url)
cmd_list.append(cmds)
def download(count,each):
startTime = time.time()
print("當前正在下載第%s個視頻,一共有%s個視頻需要下載..."%(count+1,len(cmd_list)))
print (each)
os.system(each)
endtime = time.time()
useTime = (endtime-startTime)
print ("您所下載的視頻一共使用%s秒"%useTime)
def make_page():
for p in range(1,9,1):
url = "https://www.bilibili.com/video/av84328746?p=%s"%p
urlList.append(url)
def main():
for count,each in enumerate(cmd_list):
thr1 = threading.Thread(target=download, args=(count,each))
thr1.start()
thr1.join()
# thr2 = threading.Thread(target=download, args=(count,each))
# thr2.start()
# thr2.join()
if __name__ == '__main__':
make_page()
path = "F:\數據分析\深度學習在圖像處理中的應用"
getMp4(path,urlList)
main()
etime = time.time()
utime = (etime-stime)
print ("您所下載的全部視頻一共使用%s分鐘"%utime)