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)
发布了65 篇原创文章 · 获赞 25 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/ayouleyang/article/details/104090366