利用Python采集短视频

目录

前言

分析(x0)

分析(x1)

分析(x2)

分析(x3)

分析(x4)

总结

我有话说


前言

大家好,我叫善念,这是我的第三篇技术博文。音乐、小说、这次是视频,估计下次就是图片吧。

文章都是当天现写得,自己也没有去做过。

我们将要采集的网站是网页版的DY数据:目标网址

咱们随便选择一个博主的视频进行采集,我饿了我就找了个美食博主。

 分析(x0)

在网页的元素中咱们可以找到当前视频的跳转链接:

利用Python采集短视频_第1张图片

 而经过我观察了一下我发现每个li标签都包含了一条短视频的信息:利用Python采集短视频_第2张图片

 那么这里总共是13个li标签,而咱们的这个博主肯定不止发了13个视频吧?又不是我善念这种货色只有几十个粉丝,所以问题出在哪?

我已经猜到这个是一种瀑布流的模式加载视频了,跟大家解释一下。就是比如说一个网页上面你只能看到十条数据,当你拉动网页下滑条后它会自动加载一些新的数据出来。像瀑布一样数据流出来,原理很简单,就是你拉动下滑条的时候会触发JavaScript脚本生成一些新数据

来做个测试:利用Python采集短视频_第3张图片

当我拉动浏览器的下滑条后,数据明显增多,改变了网页上的元素。

这里我再次解释一下,网页元素与网页源代码的区别:

网页元素:浏览器执行一些JavaScript渲染之后的一个呈现(所以它会改变)

网页源代码:服务器传给咱们浏览器的原始数据(经过浏览器的渲染后才会变成网页元素)所以原始数据是不会变化的。

那么瀑布流的一个优势是什么呢?明显就是降低服务器的一个负荷把?用户想看多少数据就传输多少数据,而不是一股脑的全部加载完!

分析(x1)

也就是说明咱们根本无需去考虑网页源代码(因为不可变),已知网页的视频是由认为拉动浏览器下滑条执行JavaScript脚本然后通过接口传输数据给我们。

首先咱们可以观察的到,每个视频后面的那串数字就是视频对应的ID值,前面肯定是不变的。利用Python采集短视频_第4张图片

咱们直接抓包:利用Python采集短视频_第5张图片

 根据瀑布流的规律很容易抓到这个包,因为每滑动一下下拉条它就会生成一个新的这样的包利用Python采集短视频_第6张图片

确实这个值是对应的,但是别忘了看我上上图圈出来的那个_signature参数,传说中的DY签名加密。其它值均为固定值都是一些电脑信息,浏览器的版本。只有这个_signature是加密的,自己去手动拉动下滑条多抓几个包就可以对比知道了。

分析(x2)

好吧,很多人觉得我会去解密这个参数,但是新版DY加密是有混淆的,就算是我能教各位也未必能学,所以我决定退而求次的用另外一种方法。

我们当时分析出,只要我们拉动滑块,那么在网页元素element中就会加载出新的视频资料,出现更多的li标签。

那么我们可以利用selenium去模拟人拉动下滑条吧?然后采集到视频的跳转链接,进行requests访问,问题就解决了!

但是得到视频跳转链接有什么用呢?

分析(x3)

咱们先点到视频里面看看:利用Python采集短视频_第7张图片

一下子就把视频的源地址抓到了,可是这个地址完全看不出任何的规律......不过经过我上次给你们讲的音乐的文章,你们应该知道如何分析了,首先这么长久尝试着删除一些参数,看是否还可以正常访问。最短并且可以访问的链接为我在红色框框的链接。

那么然后.......还是找不到规律,不知道如何生成的,抓包也发现此包之前就是一个图片的包而已。

分析(x4)

继续看网页元素中是否有咱们的视频源地址吧:利用Python采集短视频_第8张图片

 emmm果然有,我现在好希望源代码中也有,因为我前面采集跳转链接用了selenium已经降低了采集的速度,如果这里还是这样用selenium的话速度就太慢了。

利用Python采集短视频_第9张图片

啥也没搜到......按道理我前面抓包它也没有JavaScript文件,就一个图片的包,没理由不存在网页源代码中的,我搜短一点试试:利用Python采集短视频_第10张图片 

 不忙你们说,我是自己第一次做,边写边研究的,纯粹的实战。就这个东西我刚才眼睛都看花了,它把url进行编码了,所以咱们看起来就很伤眼睛。

利用Python采集短视频_第11张图片

好吧,咱们只要采集到缩到最短的链接就可以了。

转码给大家看看:利用Python采集短视频_第12张图片

咱们只要红框中的即可。

那么到现在的话所有的流程思路是不是走完了?

先用selenium采集到跳转的url,然后用requests模块请求跳转的url,获取到视频源地址,最后请求源地址下载就好啦。

总结

 这个只是采集单个博主的视频,那么能否整站采集所有的视频呢?我分析了一下,发现原理是一模一样的.....是可以的!

我有话说

你是否在找源代码?可惜了,我也是第一次做这个东西,我文章写完的时候就是我最后分析完的时候,我自己也没源代码。

—— 纸上得来终觉浅,绝知此事要躬行。

如果这样分析后还让有些朋友觉得有难度,那么我再给大家看一个我之前讲过的完美采集某宝的案例,selenium部分完美契合(在我主页的联系我中),requests部分就不说了,完全没什么技术含量的,就两个请求。

无视某宝网站反爬,利用Python无限采集数据!

文章的话是现写的,每篇文章我都会说的很细致,所以花费的时间比较久,一般都是两个小时以上。

原创不易,再次谢谢大家的支持

利用Python采集短视频_第13张图片

你可能感兴趣的:(Python,python,爬虫)