20行Python代码爬取视频

元旦放假前,老板让我下载一个视频发给同事群看一下,仔细研究后发现腾讯视频下载的都是QLV视频文件。这种文件只能用腾讯播放器打开,难道让我发视频还要附带个播放器?太麻烦了,想着最近在学习Python,就试了一下用Python下载腾讯视频,并保存为MP4格式,说干就干,代码撸起来!


20行Python代码爬取视频

1

流量分析


起初我想通过流量分析的方式反推出视频原地址,由于涉及到JavaScript相关内容,弄了好久没有结果。然后对视频进行分析,发现腾讯视频有个规律:

20行Python代码爬取视频


将大括号改成要下载视频的vids,经requests请求后得到的内容包含原视频地址所需的域名和key值,经过拼接,即视频地址=url+key+vids.mp4,用这个地址就可以下载该视频了。


下面我们以小猪佩奇的视频为例

给大家详细讲诉一下过程

20行Python代码爬取视频


20行Python代码爬取视频

2

解析流量,找到隐含的地址

1).首先我们打开腾讯的视频

比如小猪佩奇,可以看到它的vid是"b0020buglwx" ,既然找到了对应的下载的链接,我们就可以用request来模拟请求,然后构造对应的url,别忘记了替换vids。

20行Python代码爬取视频


2).深入分析json文件

然后我们打印出json文件,从里面分析内容,找出隐含的key和url链接:

20行Python代码爬取视频


既然能找了这些真正有用的信息,如果提取的。不要忘记了,我们有万能的正则表达式,轻松就可以搞定!

20行Python代码爬取视频


3).我们打印一下这个item看一下内容

20行Python代码爬取视频


正则表达式提取下载视频url所需的内容以及视频标题,并构造视频下载地址video_url:

20行Python代码爬取视频


20行Python代码爬取视频

3

下载视频


有了上面的视频的真正的url之后,就可以非常轻松的下载下来。

20行Python代码爬取视频

用request库按照stream模式下载,记得写入文件时候用'ab'二进制追加模式进行写入,最后完成之后记得用flush()函数清空缓冲区即可。


然后看一些我们的硬盘目录,就会发现对应的视频已经轻松下载完成了!是不是很简单啊!其实整个代码只有20行,大家可以动手练习一下!


分享到:


相關文章: