python 抓取youtube教程
lvye001 人气:2前言:
相信大家很多人都看过youtube网站上的视频,网站上有很多的优质视频,清晰度也非常的高,看到喜欢的想要下载到本地,虽然也有很多方法,但是肯定没有python 来的快,
废话不多说,上代码:
先安装:
pip install pafy
pip install youtube-dl
先来研究下pafy模块,百度了下没有这个模块的信息,到python官网http://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) #27563 print(video.length) #295 print(video.duration) #00:04:55 print(video.likes) #611 print(video.dislikes) #13 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)
这个方法,可以输出这条视频的所有数据信息
在最后的,上完整的代码:
import requests import re import pafy class YoutubeVideoDownload(): def get_video_list(self,list_url): """解析视频列表方法""" headers = { 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36' } html = requests.get(list_url, headers=headers).text videoIds = re.findall('"videoId":"([A-Za-z0-9_-]{11})","thumbnail"', html) for videoId in videoIds: download_link = "https://www.youtube.com/watch?v=" + videoId print(download_link) self.get_video_info(download_link) def get_video_info(self,detail_url): """下载视频""" video = pafy.new(detail_url) v_best = video.getbest() v_best.download() if __name__ == '__main__': yotubo = YoutubeVideoDownload() yotubo.get_video_list("https://www.youtube.com/watch?v=F7tCW0wiLk4&list=OLAK5uy_nx5m5O-enzVoclJmkLw7d9Qaaibp8xR4A")
明白的朋友不需要我多说什么吧,支持解析列表下载,支持单个视频下载,调用不同的方法即可
加载全部内容