40行代码教你利用Python网络爬虫批量抓取小视频

/1 前言/python

还在为在线看小视频缓存慢发愁吗?还在为想从新回味优秀做品但找不到资源而忧虑吗?莫要慌,让python来帮你解决,40行代码教你爬遍小视频网站,先批量下载后仔细观看,岂不美哉!git


/2 整理思路/github

这类网站通常大同小异,本文就以凤凰网新闻视频网站为例,采用倒推的方式,给你们介绍如何经过流量分析得到视频下载的url,进而批量下载。json


/3 操做步骤/浏览器

/3.1 分析网站,找出网页变化规律/缓存

一、首先找到网页,网页详情以下图所示。网络

v2-a6f59a14066fecbb178152fe7f025179_hd.jpg


二、该视频网站分为人物、娱乐、艺术等不一样类型,本文以体育版块为例,下拉到底端,以下图所示。多线程

v2-524d9b3cd49cda951c38a788a6073b50_hd.jpg


三、根据上图的结果,咱们能够发现该网站是动态网页,打开浏览器自带流量分析器,点击加载更多,找出网页变化规律,第一个就是,请求网址和返回结果以下图。标记处为页码,此时是第3页。app

v2-fb7b0d3d63c9b92246f551c6a95810e0_hd.png


四、返回结果包含视频的title、网页url、guid(至关于每一个视频的标志,后续有用)等信息,以下图所示。ide

v2-6ea055b5dfa0ec3977ac3ba729e1981a_hd.png


五、每一个网页里边包含24个视频,打印出来是这样的,以下图所示。

v2-fecb0dbbe6e4cc4661ec74615628a524_hd.jpg



/3.2 寻找视频网页地址规律/

一、先打开流量分析器,播放视频进行抓包,找到几个mp2t文件,以下图所示。

v2-2f24d2243e067a611c97147d7f30f65d_hd.jpg


二、它们的网址我依次找了出来,放到文本文件中存放起来,以发现它们之间的规律,以下图所示。

v2-e579bdddc68dfeca2b3071ade2cd6d6f_hd.jpg


三、你们发现规律了吗?网址中的p26275262-102-9987636-172625参数就是视频的guid(上述已经获得),只有range_bytes参数是变化的,并且是从0到6767623,很显然这是视频的大小,并且视频是分段合成的。找到这些规律以后,接下来咱们须要继续进行细挖视频地址的出处。


/3.3 寻找视频的下载原始地址/

一、先考虑一个问题,视频的地址是从哪来的呢?通常状况下,先在视频网页里看看有没有,若是没有,咱们就在流量分析器里,沿着第一个分段视频往上找,确定是有某个网址返回了这些信息,很快,我在1个vdn.apple.mpegurl文件里发现了下图这个。

v2-9e734ad9b9927d62d0ac22991e31e13b_hd.jpg


二、太惊喜了,这不就是咱们要找的信息么,再看看它的url参数,以下图所示。

v2-bbcaf847683d7fbe1f47589cd5ceeb88_hd.png


三、上图参数看起来不少的样子,不过不用怕。仍是利用老办法,先在网页里看看有没有,没有的话还在流量分析器里往上找,功夫不负有心人,我找到了下图这个。

v2-e00d36948f8a3d33ad58bb0cc40187af_hd.png


四、它的url以下图所示。

v2-a8b07d5bdf46b0bc2ffbffdf37bf0242_hd.png


五、仔细找找规律,咱们发现惟一须要变化的就是每一个视频的guid了,这个第一步已经获得了。另外,返回结果包含了上述除了vkey的全部参数,并且这个参数最长,那该怎么办呢?

六、不要慌,万一这个参数没有用呢,先把vkey去掉试一试。果不其然,果真没有什么用,如今整个过程已经捋顺了,如今能够撸代码了。


/3.4 代码实现/

一、在代码里边,设置多线程下载,以下图所示,其中页码能够本身进行修改哈。

v2-50e7bbe58ea50dbffcda2a6d3b2aca0e_hd.png


二、解析返回参数,json格式的,使用json库进行处理,以下图所示。经过解析,咱们能够获得每一个视频的title、网页url、和guid。

v2-e98b1547b003a2f0d7e3d58002f032bb_hd.jpg


三、模拟请求,得到除Vkey外的参数,以下图所示。

v2-c16c93d96bff4991e3739fcbd3da0029_hd.png


四、利用上一步中的参数,进行模拟请求,得到包含分段视频的信息,以下图所示。

v2-03dddf92f3d450bbefd98aebd361dc8a_hd.png


五、将分段视频合并,保存在1个视频文件,并以title命名,以下图所示。

v2-e0c0dacb0890e6a50a26aee8cb8d041a_hd.png



/3.5 效果呈现/

一、当程序运行以后,咱们即可以看到网页中的视频哗啦哗啦的在本地文件夹中进行呈现,以下图所示。接下来,妈妈不再用担忧我喜欢的视频找不着了,真香!

v2-90b6f535c116ae73bfb2fb1d042c0503_hd.jpg


固然了,若是想更加直观的话,能够在代码中加入维测信息,这个你们能够本身手动设置一下。


/4 总结/

本文主要基于Python网络爬虫,利用40行代码,针对小视频网页,进行批量获取网页视频到本地。方法简单易行,并且行之有效,欢迎你们踊跃尝试。若是想获取本文代码,请zhi姐访问github.com/cassieeric/p,便可获取代码连接,若是以为不差,记得给个star噢。

相关文章
相关标签/搜索