python 爬取极客学院视频

最近给极客学院冲了一个月的会员,就想着把有些视频下载下来,以后有机会的时候慢慢看。但官方提供的下载通道贼烦,而且还没有一个好的目录结构来管理。所以就想着自己写一个爬虫,将视频下载下来,岂不美滋滋,说干就干。

可行性分析

有目标是好的,但不能与现实差距太大,否则岂不是空留一声长叹;所以咱首先做的,是看一下这个以咱的技术水平是否能够实现。打开极客学院的一门课程的视频,打开开发者选项,点击播放。
这里写图片描述

咱们发现了这样一个数据包,将其 URL 拷贝下来,复制到另一个浏览器中,发现可以下载到一个 mp4 文件,也就是我们的课程文件。咱当时都有一点小惊喜,这么简单?如果是这样的话,岂不是不用 vip 也能下载视频?事实证明我还是 too young too simple。经过我的研究发现,这个URL 留了坑,其它部分都还好办,就后面那一段参数,感觉根本无从下手,咱找了一下引用的 js 文件,都没找到( 可能是因为咱比较菜 )而且这个参数还是会变化的,可能是加了时间戳或者随机数在里面。

这个感觉是解不出来了,怎么办呢?就下载不了了吗?这个时候,就轮到 vip 出场了,如果是 vip 用户,官方会提供一个下载的接口,通过这个接口,就可以将一个非常简单的课程 URL 转换为我们前面看到的那个十分复杂的 URL。自此,基本难点都解决了,可以动手写代码了。

提取学习路线

极客学院中的视频是按照一定的形式进行组织的,我们要想实现批量的进行的下载,就需要取得课程列表,这里我选用的是知识体系图,当然,你也可以选择其他的分类,只要拿到课程列表即可。
这里写图片描述

获取课程号

在课程列表中随便点开一个课程,会发现,每个课程都存在一个课程号,通过这个课程号我们便可以定位到特定的课程。
这里写图片描述

我们要做的就是从之前路线所对应的课程列表中取得相应的课程号,以及课程的名字,名字可以用来作为我们存储下载到的视频的文件名,方便日后查看。

获取视频 URL

每个课程是分为不同课时的,我们通过之前获取到的课程课程号,在加上不同的课时号,就可以定位到每个视频了,通过这两个参数构造出视频的 URL 带上自己登录的 cookie ,向服务器发出请求,再将返回的数据进行解析,就能得到我们下载视频所需要的 URL 了。

这里写图片描述

最后只需要将下载到的视频,写入文件就可以了,因为本人只是需要下载一下视频,所以这里并没有做极客学院的登录部分,而是直接提取了浏览器的 cookie 用于记录登录状态。

再附上几张成果图:

这里写图片描述

这里写图片描述

代码:https://github.com/Slwhy/jikexueyuan.git

猜你喜欢

转载自blog.csdn.net/slwhy/article/details/79603190