/1 前言/python
还在为在线看小视频缓存慢发愁吗?还在为想从新回味优秀做品但找不到资源而忧虑吗?莫要慌,让python来帮你解决,40行代码教你爬遍小视频网站,先批量下载后仔细观看,岂不美哉!git
/2 整理思路/github
这类网站通常大同小异,本文就以凤凰网新闻视频网站为例,采用倒推的方式,给你们介绍如何经过流量分析得到视频下载的url,进而批量下载。json
/3 操做步骤/浏览器
/3.1 分析网站,找出网页变化规律/缓存
一、首先找到网页,网页详情以下图所示。网络
二、该视频网站分为人物、娱乐、艺术等不一样类型,本文以体育版块为例,下拉到底端,以下图所示。多线程
三、根据上图的结果,咱们能够发现该网站是动态网页,打开浏览器自带流量分析器,点击加载更多,找出网页变化规律,第一个就是,请求网址和返回结果以下图。标记处为页码,此时是第3页。app
四、返回结果包含视频的title、网页url、guid(至关于每一个视频的标志,后续有用)等信息,以下图所示。ide
五、每一个网页里边包含24个视频,打印出来是这样的,以下图所示。
/3.2 寻找视频网页地址规律/
一、先打开流量分析器,播放视频进行抓包,找到几个mp2t文件,以下图所示。
二、它们的网址我依次找了出来,放到文本文件中存放起来,以发现它们之间的规律,以下图所示。
三、你们发现规律了吗?网址中的p26275262-102-9987636-172625参数就是视频的guid(上述已经获得),只有range_bytes参数是变化的,并且是从0到6767623,很显然这是视频的大小,并且视频是分段合成的。找到这些规律以后,接下来咱们须要继续进行细挖视频地址的出处。
/3.3 寻找视频的下载原始地址/
一、先考虑一个问题,视频的地址是从哪来的呢?通常状况下,先在视频网页里看看有没有,若是没有,咱们就在流量分析器里,沿着第一个分段视频往上找,确定是有某个网址返回了这些信息,很快,我在1个vdn.apple.mpegurl文件里发现了下图这个。
二、太惊喜了,这不就是咱们要找的信息么,再看看它的url参数,以下图所示。
三、上图参数看起来不少的样子,不过不用怕。仍是利用老办法,先在网页里看看有没有,没有的话还在流量分析器里往上找,功夫不负有心人,我找到了下图这个。
四、它的url以下图所示。
五、仔细找找规律,咱们发现惟一须要变化的就是每一个视频的guid了,这个第一步已经获得了。另外,返回结果包含了上述除了vkey的全部参数,并且这个参数最长,那该怎么办呢?
六、不要慌,万一这个参数没有用呢,先把vkey去掉试一试。果不其然,果真没有什么用,如今整个过程已经捋顺了,如今能够撸代码了。
/3.4 代码实现/
一、在代码里边,设置多线程下载,以下图所示,其中页码能够本身进行修改哈。
二、解析返回参数,json格式的,使用json库进行处理,以下图所示。经过解析,咱们能够获得每一个视频的title、网页url、和guid。
三、模拟请求,得到除Vkey外的参数,以下图所示。
四、利用上一步中的参数,进行模拟请求,得到包含分段视频的信息,以下图所示。
五、将分段视频合并,保存在1个视频文件,并以title命名,以下图所示。
/3.5 效果呈现/
一、当程序运行以后,咱们即可以看到网页中的视频哗啦哗啦的在本地文件夹中进行呈现,以下图所示。接下来,妈妈不再用担忧我喜欢的视频找不着了,真香!
固然了,若是想更加直观的话,能够在代码中加入维测信息,这个你们能够本身手动设置一下。
/4 总结/
本文主要基于Python网络爬虫,利用40行代码,针对小视频网页,进行批量获取网页视频到本地。方法简单易行,并且行之有效,欢迎你们踊跃尝试。若是想获取本文代码,请zhi姐访问https://github.com/cassieeric/python_crawler/tree/master/little_video_crawler,便可获取代码连接,若是以为不差,记得给个star噢。