Python下载知乎视频

导语

之前在知乎看到有人问如何保存知乎回答里的视频,于是想着写个脚本直接根据知乎回答的链接下载该回答里的视频,这样岂不是十分简单方便?(因为我看到那个提问下方的回答操作起来都挺“麻烦”的)

让我们愉快地开始吧~

开发工具

Python版本:3.6.4

相关模块:

PIL模块;

requests模块;

click模块;

以及一些Python自带的模块。

环境搭建

安装Python并添加到环境变量,pip安装需要的相关模块即可。

原理简介

首先,请求给定的知乎回答链接,例如:

'https://www.zhihu.com/question/21395276/answer/425130152'

利用正则表达式提取请求结果页面中的视频信息(也就是视频ID,ID数量与该回答中的视频数量一致)。然后,将抓包分析获得的API链接:

https://lens.zhihu.com/api/videos/

与每个视频ID均可组合成一个新的链接地址,例如:

https://lens.zhihu.com/api/videos/xxxxxx

请求该链接地址,即可获得对应视频的下载地址。

另外,需要注意的是,知乎回答里的视频文件使用的是m3u8、ts流格式,即需要通过解析m3u8文件来下载所有的视频传输流文件,然后再将其合并。最简单的方法是使用FFmpeg解析,不过本着学习的目的,我自己也写了个简单的解析类,部分代码截图:

That's all.

完整源代码请自行参考相关文件。

视频演示

在cmd窗口运行"Cmd.py"或"Demo.py"文件即可。

当然相关文件中也提供了打包好的EXE文件,无需配置环境,直接双击运行即可。

视频演示如下:

更多

代码截止2018-08-12测试无误。

知乎视频下载功能已经添加到本人开源的视频下载器项目中,GitHub地址:

https://github.com/CharlesPikachu/Video-Downloader

相关文件中提供的源代码也是整个项目的源代码,打包好的EXE文件也是对整个项目功能的打包。T_T我就是来水篇文章的,嘿嘿~

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180812B10NBZ00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券