前言:

相信大家很多人都看过youtube网站上的视频,网站上有很多的优质视频,清晰度也非常的高,看到喜欢的想要下载到本地,虽然也有很多方法,但是肯定没有python 来的快,

废话不多说,上代码:

先安装:

pip install pafy
pip install youtube-dl
pip install pytube

先来研究下pafy模块,百度了下没有这个模块的信息,到python官网https://pypi.org/project/pafy/ 查了下,我们来看看这个模块都有些什么功能

import pafy
url = "https://www.youtube.com/watch?v=bMt47wvK6u0"
video = pafy.new(url)
print(video)

这是周杰伦的一条视频链接,我们看看会输出什么 https://www.youtube.com/watch?v=zk4Olw9eRVo

print(video.title)
#袁詠琳 Cindy Yen【我相信你了 I Believe】Official Lyric MV - 電視劇「用九柑仔店」插曲
print(video.author)
#杰威爾音樂 JVR Music
print(video.viewcount)
#
print(video.length)
#
print(video.duration)
#00:04:55
print(video.likes)
#
print(video.dislikes)
#
print(video.description)
# 简介......

还可以查看可以下载视频的分别率列表

for s in streams:
print(s)

normal:webm@640x360
normal:mp4@640x360
normal:mp4@1280x720

当然了,详细的我们再的查看

for s in streams:
print(s.resolution, s.extension, s.get_filesize(), s.url)

是不是分辨率、格式、大小、下载链接就都有了,这些还不算什么,我们接着看

import pafy
url = "https://www.youtube.com/watch?v=bMt47wvK6u0"
video = pafy.new(url)
best = video.getbest()
print(best.resolution, best.extension) 1280x720 mp4
getbest()方法呢 输出的就是这条视频最清晰的那一条信息 
getbest(preftype="webm")这样用也可以输出指定格式的视频,接着看
import pafy
url = "https://www.youtube.com/watch?v=bMt47wvK6u0"
video = pafy.new(url)
best = video.getbest(preftype="webm")
print(best.url) # 打印出指定格式的视频链接

我们接着来看视频的下载方法,这个模块已经为我们封装好了,直接调用此方法即可

import pafy
url = "https://www.youtube.com/watch?v=bMt47wvK6u0"
video = pafy.new(url)
best = video.getbest()
best.download(quiet=False)
best.download(filepath="/tmp/",quiet=False)
可以指定下载路径,和是否显示进度条 下面我们来看音频的下载方法:
import pafy
url = "https://www.youtube.com/watch?v=bMt47wvK6u0"
video = pafy.new(url)
audiostreams = video.audiostreams
for a in audiostreams:
print(a.bitrate, a.extension, a.get_filesize())

audiostreams[1].download()  #下载第一条音频信息
bestaudio = video.getbestaudio()  # 同样是输出最优质的那一条
print(bestaudio.bitrate) 160k
bestaudio.download()  # 直接下载就可以

接着看:

allstreams = video.allstreams
for s in allstreams:
print(s.mediatype, s.extension, s.quality)

这个方法,可以输出这条视频的所有数据信息

在最后的,上完整的代码:

from pytube import Playlist
import pafy
from multiprocessing import Pool
import os class YoutubeVideoDownload():
def __init__(self,video_path,list_url):
self.video_path = video_path
self.list_url = list_url def get_video_list(self):
"""解析视频列表方法"""
pl = Playlist(self.list_url)
url_lists = pl.parse_links()
data = ["https://www.youtube.com" + i for i in url_lists]
return data def get_video_info(self,detail_url):
"""下载视频"""
print(detail_url)
video = pafy.new(detail_url)
v_best = video.getbest()
v_best.download(self.video_path) if __name__ == '__main__':
p = Pool(4)
video_path = "videos/Pete The Cat Books"
list_url = "https://www.youtube.com/watch?v=K-W3vxS8Y2o&list=PLPPUs6fCDKUdzfQWCkCRl1jDdvfZbn_AF"
yotubo = YoutubeVideoDownload(video_path,list_url)
res = p.map(yotubo.get_video_info, yotubo.get_video_list())

注:解析列表直接这样就可以,但是如果下载单条的话直接调第二个方法即可

python 抓取youtube教程的更多相关文章

  1. Python 抓取网页并提取信息(程序详解)

    最近因项目需要用到python处理网页,因此学习相关知识.下面程序使用python抓取网页并提取信息,具体内容如下: #---------------------------------------- ...

  2. 使用 Python 抓取欧洲足球联赛数据

    Web Scraping在大数据时代,一切都要用数据来说话,大数据处理的过程一般需要经过以下的几个步骤    数据的采集和获取    数据的清洗,抽取,变形和装载    数据的分析,探索和预测    ...

  3. python抓取性感尤物美女图

    由于是只用标准库,装了python3运行本代码就能下载到多多的美女图... 写出代码前面部分的时候,我意识到自己的函数设计错了,强忍继续把代码写完. 测试发现速度一般,200K左右的下载速度,也没有很 ...

  4. python抓取网页例子

    python抓取网页例子 最近在学习python,刚刚完成了一个网页抓取的例子,通过python抓取全世界所有的学校以及学院的数据,并存为xml文件.数据源是人人网. 因为刚学习python,写的代码 ...

  5. Python抓取页面中超链接(URL)的三中方法比较(HTMLParser、pyquery、正则表达式) <转>

    Python抓取页面中超链接(URL)的3中方法比较(HTMLParser.pyquery.正则表达式) HTMLParser版: #!/usr/bin/python # -*- coding: UT ...

  6. 如何用python抓取js生成的数据 - SegmentFault

    如何用python抓取js生成的数据 - SegmentFault 如何用python抓取js生成的数据 1赞 踩 收藏 想写一个爬虫,但是需要抓去的的数据是js生成的,在源代码里看不到,要怎么才能抓 ...

  7. 关于python抓取google搜索结果的若干问题

    关于python抓取google搜索结果的若干问题     前一段时间一直在研究如何用python抓取搜索引擎结果,在实现的过程中遇到了很多的问题,我把我遇到的问题都记录下来,希望以后遇到同样问题的童 ...

  8. 用python抓取智联招聘信息并存入excel

    用python抓取智联招聘信息并存入excel tags:python 智联招聘导出excel 引言:前一阵子是人们俗称的金三银四,跳槽的小朋友很多,我觉得每个人都应该给自己做一下规划,根据自己的进步 ...

  9. python抓取月光博客的全部文章而且依照标题分词存入mongodb中

    猛击这里:python抓取月光博客的全部文章

随机推荐

  1. [Luogu3554] Poi2013 Triumphal arch

    Description Foreseeable和拿破仑的御用建筑师让·夏格伦在玩游戏 让·夏格伦会玩一个叫“凯旋门”的游戏:现在有一棵n个节点的树,表示一个国家 1号点代表这个国家的首都 这个游戏由两 ...

  2. ‎Cocos2d-x 学习笔记(14.1) Event EventCustom EventListener

    1. Event EventCustom 所有事件类继承了Event. Event中的枚举,定义了事件的类型: enum class Type { TOUCH, //触摸 KEYBOARD, //键盘 ...

  3. Head First设计模式——装饰者模式

    前言:对于设计模式我们有时候在想是否有必要,因为实际开发中我们没有那么多闲工夫去套用这么多设计模式,也没有必要为了模式而模式. 通常这些模式会引入新的抽象层,增加代码的复杂度,但是当我们掌握了这些设计 ...

  4. python类中的self

    class User: def walk(self): print(self,"正在慢慢走") # User.walk() # 会报错 TypeError: walk() miss ...

  5. {每日一题}:tcp协议实现简单的文件下载器(单任务版)

    文件下载器客户端 这个版本的只是为了方便回顾一下TCP客服端,服务端的创建流程,缺点就是  服务器一次只能让一个人访问下载,过两个写个使用面向对象写一个多线程版的强化一下. from socket i ...

  6. SSO原理解析

    什么是单点登录 简单点说就是公司有A,B两个系统,我登录了A系统之后再跳转到B系统可以直接访问,而不需要再次登录B系统. 几种常见的单点登录实现方式 在讲解单点登录之前先讲解几个基本的概念: Cook ...

  7. 关于M23内核简介 - 待续

    1.定位 M23是基于最新的ARMv8-M构架的主要关注低功耗应用的微控制器,未来会是M0.M0+的替代品. M33是基于最新的ARMv8-M构架的主要关注高能效应用的微控制器,未来会替换M3.M4. ...

  8. 利用电脑开启自带虚拟wifi,无需第三方工具。

    注:此方法只验证win 7以上系统,XP  server 2016 系统未验证 1.新建记事本,在记事本中输入netsh wlan set hostednetwork mode=allow ssid= ...

  9. 百万年薪python之路 -- JS的BOM与DOM对象

    BOM对象 location对象 location.href 获取URL location.href="URL" // 跳转到指定页面 location.reload() 重新加载 ...

  10. JVM(3) 垃圾收集器与内存分配策略

    一.垃圾收集的概念 在Java虚拟机运行时数据区中程序计数器.虚拟机栈和本地方法栈3个区域随线程而生,随线程而灭:栈中的栈帧随着方法的进入和退出而有条不紊地执行着出栈和入栈操作,每一个栈帧中分配多少内 ...