python you-get爬取bilibili視頻當教程

拿着電腦,最怕的就是沒有網絡了,想學習什麼都不方便,就只能拿它來防身了。當嗶哩嗶哩作爲一個免費超級學習網站,上面的教程簡直是太棒了,何不把上面的視頻下載下來做爲教程了,這樣害怕沒有學習資源嗎?找個網好的地方,一起來爲沒有網絡做準備吧,以後不需要網也是可以敲代碼的~


明確目標: 嗶哩嗶哩的視頻
工具: 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)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章