python youtube 视频下载 youtube-dl

引用

https://www.cnblogs.com/tsdxdx/p/7215336.html

python 版本 Windows 64 位系统 安装 python 3.4.0  建议读者python版本 与本文一致   

python下载链接

https://download.csdn.net/download/qq_37082495/10646369

python下载  能看懂 官网的小伙伴 就去python官网下

https://www.python.org/downloads/windows/

安装python指导链接

https://blog.csdn.net/nmjuzi/article/details/79075736

安装python完毕 安装   youtube-dl

pip install youtube-dl

不明白pip的读者 查看 链接

https://www.cnblogs.com/tsdxdx/p/7215336.html

youtube 网站需要  软件 打开 文件夹内的  Shadowsocks.exe 运行   免费账号地址http://free-ss.cf/(可能已经不在了)

https://download.csdn.net/download/qq_37082495/10646483

代码引用地址

https://blog.csdn.net/qq_28484355/article/details/79181899

# coding:utf8
import subprocess
 
import time
 
import os
 

# 传入url,加载相应的视频 获得视屏 版本
def download_by_url(url):
    # 查询视频信息语句
    # subprocess模块支持 windows系统 与 python 交互
    p = subprocess.Popen('youtube-dl -F ' + url, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)

    
    start = time.time()
    print ("********\t查询:" + url + "\t" + time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(start)))
    #打印控制台信息
    formatcode={"mp4":[],"3gp":[],"webm":[]}
    while True:
        line = p.stdout.readline().decode()
        if line != '':
            print(line)
            if line.find("mp4")>-1:
                formatcode["mp4"].append(line.split(" ")[0])
            if line.find("3gp")>-1:
                formatcode["3gp"].append(line.split(" ")[0])
            if line.find("webm")>-1:
                formatcode["webm"].append(line.split(" ")[0])
        else:
            break
    p.wait()

    #下载视频
    # formatcode["mp4"] 是mp4格式的视频code 不同的code代表不同的视频分辨率
    code=""
    for x in formatcode["mp4"]:
        if x=="18":
            code="18"
    if code=="":
        code=formatcode["mp4"][0]
    print(code)
    #下载视频    
    p = subprocess.Popen('youtube-dl -f '+code+" "+ url, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)

    print ("********\t下载:" + url + "\t" + time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(start)))
    #打印控制台信息
  
    while True:
        line = p.stdout.readline().decode()
        if line != '':
            print(line)
        else:
            break
    p.wait()


    end = time.time()
    print ("********\tEnd\t"+time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(end)),)
    print ("taking:"+str(int(end-start))+" seconds")  
 

 
if __name__ == '__main__':
    
    download_by_url("https://www.youtube.com/watch?v=wNDsp9_MSDA")

 

你可能感兴趣的:(python,爬虫)