神器,GitHub2.5万星:视频网站一行Python代码爬

Github 今日推荐 WebGL2神技!deck.gl:秒渲海量数据的可视化神器 所有智能体都是开源的,社区可以一起改进和分享。无论是集成到网页、React 应用还是 Python 项目,deck.gl 都能高效处理海量数据,并支持高度自定义,适合开发者和数据分析师快速构建炫酷的数据可视化应用。这是一个GitHub上的网络安全资源库,专门收集各种实用的攻击载荷(Payloads)和绕过技巧,主要用于Web应用安全测试和渗透测试(Pentest)或CTF比赛。用户只需运行简单的命令启动本地服务器,在浏览器中访问就能生成包含助记词、公私钥和地址的钱包,还能测试签名功能并自动保存钱包文件。 阅读详情

640?wx_fmt=png

在进入主题之前,先来吐槽下现在的视频网站。各个视频网站内容越来越多,平台强大了就会有诸多的限制,比如超长的广告等待时间、部分内容不允许缓存等,另外对于经常坐飞机或长期处于弱信号条件下的人来说也是个比较头疼的问题。

对于上述问题,今天介绍的这个项目提供了一个很好的解决方案——只需要1行命令就能够从各大视频网站中下载想要的视频,而且不必安装视频网站专用APP或者第三方缓存工具。


1.项目介绍



1).神器库you-get

You-Get是GitHub上一个评分很高的python项目,作为一款精巧的命令行应用程序,可以很方便地从web网站下载视频。其下载的视频文件可以直接打开播放,不需要安装特定的网络浏览器,也免去了在线观看广告太长的烦恼。


事实上,you-get不仅能够下载视频文件,还能下载音乐、图片等其他媒体文件,只要你能提供目标资源的URL。只不过,you-get用于下载音乐和图片的功能并不十分完善,而且意义也没有视频下载那样明显,因此本文仅以视频下载为例进行介绍演示。


2).支持的网站

you-get的优势之一就是支持包括优酷、爱奇艺、Bilibili、YouTube等几十个国内外知名视频网站(下图只是其中一部分),对于每一个想要下载的视频,都能够使用同一条命令进行直接下载,需要调整的只有目标视频的URL而已。

640?wx_fmt=png


当然,you-get的使用也有一些注意事项,比如受网页格式调整或反爬措施更改等因素影响,可能会出现部分网站或部分视频源无法下载的问题,对于已经发现的问题会在这里列出,在使用前可以提前查阅;还有就是各视频网站的VIP视频通过you-get是没有办法下载的。


更重要的是,千万不要使用you-get去做一些可能构成侵犯版权等违法行为的事,对于这一点,you-get已经专门做出了说明

640?wx_fmt=png


2.初级应用



1).安装与试用

you-get的安装也是老套路了,直接使用"pip install you-get"。

you-get的使用同样简单,只要在终端输入形如"you-get URL(目标视频的url)"的命令就能够自动下载对应的视频。当然,you-get命令还有一些功能参数,其中最为常用的有两个:

  • --info/-i:加了这个参数,you-get命令仅会显示目标视频的基本信息,而不会开始下载视频。

  • --output-dir/-o:用于指定下载视频的存储路径。

另外还有其他一些参数,用于实现诸如设置代理、加载cookie、提取目标源URL等功能,详情参见官方文档。下面我们找一段视频试验下you-get的效果,视频网址如下:

640?wx_fmt=png

首先使用“-i”参数获取视频的基本信息,按照文档中的示例,在终端中输入:

you-get -i 'https://www.bilibili.com/bangumi/play/ss26284'

回车后却出现了下图中的提示,很明显是发生了错误,那么该如何解决呢?我们接着往下看。

640?wx_fmt=png


2).问题与调试

按照you-get给出的提示,当下载视频遇到问题时应该分四步来解决:一是排除网络问题;二是确保you-get更新到最新版本;三是检查目标视频是否已经确认无法爬取。很遗憾,这次的问题并不是上面三个原因造成的,所以只能使用第四个方法--debug参数进行调试,调试结果如下图:

640?wx_fmt=png


根据debug的调试结果,出现问题的原因是<urlopen error [Errno 11001] getaddrinfo failed>,这个问题通常是由单引号引起的,我们尝试把上面you-get指令中的单引号替换为双引号,输入:

you-get -i "https://www.bilibili.com/bangumi/play/ss26284"


结果成功获取了目标视频的基本信息:

640?wx_fmt=png


可见,目标视频有4种清晰度的格式,接着去掉-i参数正式下载视频(默认会采用第一种视频格式),结果如下:

640?wx_fmt=png

只用了十几秒,300多M的视频就下载完毕,速度还是很快的。



3.高级用法



上面这种方法一次只能下载一个视频,文档中并没有说明如何批量下载视频,按照目前的方法如果想要批量下载需要多次操作,有点不方便,另外文档中也没有讲如何在代码中以函数的形式调用you-get接口,不过由于项目是开源的,我们可以通过阅读源代码来寻找答案。


1).查阅源码

通过查阅项目文件,我们发现在tests目录下有几个py文件:

640?wx_fmt=png

阅读test.py中的代码(下图),初步判定you-get的核心功能存在于“you_get.extractors”之中,形如XXXX.download的函数就是下载接口函数。


640?wx_fmt=png

进入到extractors目录,发现里面有很多py文件,每个文件的名称都是一个网站,由此可以推测每个文件中的代码所实现的功能是对应网站中视频/音乐/图片的爬取和下载。

640?wx_fmt=png


随便打开一个文件(比如bilibili.py),看一下代码内容。虽然代码内容很多,但结构还是很清晰的,具体细节暂且略过,直接看代码底部,bilibili.py共定义了两个函数接口——download和download_playlist,通过阅读代码可以得知这两个函数分别用于单个视频下载和批量视频下载。

640?wx_fmt=png


2).批量下载

you-get的命令行参数中并没有对单个视频或者批量视频的甄别,可以推测you-get在封装时已经添加了对单个视频和多个视频进行识别的功能。为了验证,还是用《盾勇》这部动画来进行试验,下图是动画的列表页。

640?wx_fmt=png

在终端输入下面的下载指令:

you-get "https://www.bilibili.com/bangumi/media/md4316482/?from=search&seid=6151030679368490778"

you-get会逐个下载列表中的视频,而且对于目录中已经存在的视频还会自动跳过(下图),原来批量下载视频如此简单。


640?wx_fmt=png


3).函数调用

虽然顺利找到了批量下载的方法,不过总是在命令行中使用you-get还是感觉有点受限,基于我们前面已经找到了函数接口,不妨试试在python代码中调用you-get的下载函数。


还是以bilibili模块为例,在bilibili.py文件中并没有发现相关的参数设置部分,但是在代码的开头调用了extractor.VideoExtractor函数(下图)。我们顺藤摸瓜,在这个函数中找到了参数设置的相关内容,比如info_only对应的是命令行参数-i,outpath_dir对应的是命令行参数-o,另外在调用函数下载时merge参数是必须设置的(这个参数决定了下载后的媒体文件是否合并,例如有些网站下载的视频文件和音频文件是分开的,merge为True时,下载后会自动将两个文件合并)。


640?wx_fmt=png

将下面几行代码保存为python脚本进行运行测试,发现其效果和在终端使用you-get命令行几乎一模一样。

from you_get.extractors import bilibilibilibili.download('https://www.bilibili.com/bangumi/play/ep259692', info_only=True)bilibili.download('https://www.bilibili.com/bangumi/play/ep259692', merge=True, output_dir='your dir')
bilibili.download('https://www.bilibili.com/bangumi/play/ep259692', info_only=True)
bilibili.download('https://www.bilibili.com/bangumi/play/ep259692', merge=True, output_dir='your dir')


现在,我们可以在自己的程序中使用you-get了,感觉灵活性一下子提升了好多。you-get中还有很多神器的功能和设定,就有待于大家自己去挖掘了。


鳄鱼出品

必是精品

640?wx_fmt=jpeg

Python库积累之you-get库:网页视频与资源下载 you get库 阅读详情

相关推荐

GitHub分享】you-get项目

you-get是一个基于Python3开发的开源项目,它以其强大的媒体下载功能而广受欢迎。无论是视频还是音频,you-get都能轻松应对,支持多个主流视频网站,让下载变得简单快捷。下面,我将从安装、使用、具体参数以及卸载四个方面,详细介绍you-get这个开源项目。

2303_81251774的博客 2720

you-get 命令与踩坑

you-get是python中非常好用的视频下载包,可以支持多个门户网站的下载。 我经常用来下载B站视频。 使用方法很简单,常用命令如下 you-get [URL] you-get -i [URL]#显示下载信息 you-get -o [save_path] [URL]#指定地址存储 you-get [URL] --playlist#多P同时下载 踩坑! 对于文件比较大的,如果没有安装FFmepg,会将视频和音频分别存储。 解决办法就是安装好FFmepg ...

sunnyblogs的博客 1400

Python you-get 库的使用方法

you-get 库的使用方法 一.python版本3下,使用清华源下载(推荐) pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple you-get 安装就可以使用了,这里推荐一些源站(下载速度很快): #豆瓣 pip install -i http://pypi.douban.com/simple/ you-get #清华 pip install -i https://pypi.tuna.tsinghua.edu.cn/simple you-g

m0_47380857的博客 1万+

能的python第三方库就是强大——you-get

不断学习,才能发现自己的无知但是要解答大家一个问题,保存路径的问题,你的命令行在哪个文件夹下运行,下载的东西就自动保存在该文件夹下。 曾经视频,都是自己去使用流来处理的,今天逛博客发现一个文章《GitHub上分享一行Python代码网站视频》分享一个好东西,只需要1行命令就能够从各大视频网站中下载想要的视频(B站、优酷还是腾讯视频都可以),而且不必安装视频网站专用APP或者第三方缓存工具。这...

cht2511的博客 1285

python 网站 实例_神器GitHub2.5视频网站一行Python代码

原创 菜鸟哥 菜鸟学Python 在进入主题之前,先来吐槽下现在的视频网站。各个视频网站内容越来越多,平台强大了就会有诸多的限制,比如超长的广告等待时间、部分内容不允许缓存等,另外对于经常坐飞机或长期处于弱信号条件下的人来说也是个比较头疼的问题。对于上述问题,今天介绍的这个项目提供了一个很好的解决方案——只需要1行命令就能够从各大视频网站中下载想要的视频,而且不必安装视频网站专用APP或者第三方缓...

weixin_39805409的博客 141

GitHub 120K+!这些神器仅需一行代码即可下载全网视频

大家好,我是 JackTian。 今天这篇文章的内容对于经常浏览各大视频网站的同学来说,是一大神器工具。当你看到自己目前所需的视频时想尽各种办法保存至本地,方便后期再次回看。恰巧有些视频可能需要会员才能够下载,有些第三方的视频下载器可能在下载过程中比较缓慢。 这次给小伙伴们推荐 GitHub 上的几个仓库,全是神器,通过其中的一款神器仅需要用一行代码即可下载全网视频!这对于喜欢屯视频的小伙伴来说,一定会喜欢这几款视频下载神器工具,真香呐! You-Get(35.5K Star) You-Get 是一个很小

JackTian 8788

GitHub 119K+!这些神器仅需一行代码即可下载全网视频

“ 阅读本文大概需要 3 分钟。 ”今天这篇文章的内容对于经常浏览各大视频网站的同学来说,是一大神器工具。当你看到自己目前所需的视频时想尽各种办法保存至本地,方便后期再次回看。恰巧有些视...

静觅 2638

【效率】GitHub 119K+!这些神器仅需一行代码即可下载全网视频

作者 |JackTian来源 | 杰哥的IT之旅(ID:Jake_Internet)转载请联系授权(微信ID:Hc220066)大家好,我是 JackTian。今天这篇文章的内容对于经...

fengdu78的博客 1142

牛气!GitHub 119K+!这些神器仅需一行代码即可下载全网视频

作者 |JackTian来源 | 杰哥的IT之旅(ID:Jake_Internet)今天这篇文章的内容对于经常浏览各大视频网站的同学来说,是一大神器工具。当你看到自己目前所需的视频时想...

小詹学python的博客 1044

这 10 个让你笑的合不拢嘴的 GitHub 项目,居然拿了 7

作者 | 小七来源 | 七月在线我敢保证看完下面的几个项目,你收藏夹一定会多几个网址,越用越开心,用完之后高呼 "GitHub大法好”、“女装才是正义!"对于我来说,GitHub那是每天必刷,早就珍藏了 100+GitHub 上的项目。这次从中精挑细选出来10个哪怕刚开始学编程也能用,并且越用越爽的项目。一、Dress首先迎来GitHub的镇站之宝:Dress。总所周知,GitHub是程序员分享技...

涛哥聊Python 438

Python自动抢票神器GitHub热榜第一!

点击上方“Python技术之巅”,马上关注,每天下午17:40准时推送真爱,请置顶或标车栗子 发自凹非寺量子位 报道 | 公众号 QbitAI过几天就端午了,端午结...

欢迎关注公众号:【码农突围】,公号后台回复9999,可以获取一份500页的LeetCode刷题笔记。 1万+

github 运行python_超酷!GitHub上几Python

虫很有趣,很多同学都在学虫,其实虫学习有一定的成本,需要考虑静态和动态网页,有一堆的库需要掌握,复杂的需要用scrapy框架,或者用selenium取,甚至要考虑反策略。如果你不经常数据,偶尔用用的话,有一种神器可以非常快速的取,分分种上手而且效果很不错的。今天我们就来介绍一下这款神奇"WebScrapy"安装WebScrapy跟其他的第三方的数据采集器相比,WebScrapy是一款...

weixin_39758041的博客 276

python代码交流网站,python交流论坛推荐

虽说是针对初学者的Python零基础入门,但是很多的适合初学者的网站、教程、书籍、视频都根本没有囊括进去。我是跟着“Crossin的编程教室”的微信公众号每天学习一课来学习Python的,当时的动力是据说“Python女神”也在学完习,后来也看过廖雪峰老师的教程,Vamei和老齐Py的没有看过。这是人工智能的入门项目。4. 廖雪峰的python教程,重点讲述python和其它语言的不同,适合有其它语言基础的朋友。

2301_81900439的博客 1025

霸占Github热搜榜,Python视频下载神器,支持80+网站,比迅雷还快!

You-Get是一款功能强大的命令行下载工具,支持从YouTube、优酷等数十个网站下载视频、音频和图像。它在GitHub上已获36,970标,用户可通过Python 3和pip轻松安装。You-Get不仅能下载媒体内容,还支持断点续传和自定义保存路径,适合追求开源工具和高效下载的用户。无论是想保存喜欢的视频还是摆脱专有技术限制,You-Get都是理想选择。

公子云梦泽的博客 201

python交流论坛推荐,python代码交流网站

虽说是针对初学者的Python零基础入门,但是很多的适合初学者的网站、教程、书籍、视频都根本没有囊括进去。我是跟着“Crossin的编程教室”的微信公众号每天学习一课来学习Python的,当时的动力是据说“Python女神”也在学完习,后来也看过廖雪峰老师的教程,Vamei和老齐Py的没有看过。这是人工智能的入门项目。4. 廖雪峰的python教程,重点讲述python和其它语言的不同,适合有其它语言基础的朋友。

npy199331的博客 1015
上一篇: Python 最抢手、Java 最流行、Go 最有前途,7000 位程序员揭秘 2019 软件开发现状...
下一篇: 如何用Pandas花式拼接表格数据
菜鸟学Python
博客等级 码龄9年 7562粉丝 571原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值