• python 抓取youtube教程


    前言:

    相信大家很多人都看过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)
    #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)

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

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

    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())

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

  • 相关阅读:
    触发器_01(trigger)
    24.Show table status解析
    Mysql排名问题
    zabbix监控
    MyFlash工具
    23.Sharding:谁都能读懂的分库、分表、分区
    Mysql集群结构说明
    Percona XtraDB Cluster(PXC) Mysql集群
    mysql-router
    MGR搭建的过程中遇见的错误以及处理方法
  • 原文地址:https://www.cnblogs.com/lvye001/p/11907111.html
Copyright © 2020-2023  润新知