分享一个Python程序员下载在线视频的

北京皮炎医院电话 http://pf.39.net/bdfyy/bdfzj/210410/8833134.html

由于近期沉迷于韩国小姐姐无法自拔,每天跑去看小姐姐的VLOG,但是跨国服务器的在线视频真的卡到不行,于是想到把视频下载下来再看,但是原网站不提供下载链接,于是绞尽脑汁就有了下面这一幕。

很多人都有这样一种感觉,当你真的对某件事情特别感兴趣的时候,那么什么都拦不住你。我也一样,于是到网上搜索大量资料,找到了解决办法。

第一个思路用浏览器抓包找该网站的视频数据包,令人意外的是发现了在线视频的文件格式其实是这样的。

其中有一个qoe的包,里面什么都没有,我认为这是被废弃的数据,或者无用的保持连接手段,与我们要做的事情无关。

重点看xxxx-随机数-x.ts这个用红框标志出来的部分,这就是我们要下载的视频文件,在这里他不是mp4或者mkv的格式。

ts是日本高清摄像机拍摄下进行的封装格式,全称为MPEG2-TS。ts即TransportStream的缩写。MPEG2-TS格式的特点就是要求从视频流的任一片段开始都是可以独立解码的。

独立解码那我就明白了,网站把视频切片切成N个.ts文件,然后一点点地返回到浏览器,那我猜使用下载软件下载电影的时候其中边下边播的功能也是同样原理把!再去观察ts文件,发现他们都有一个规律,以后缀0为起点依次递增,但是根据视频不同,它的最大文件数也不同,那我怎么知道这个视频一共有多少个包呢?

通过在页面直接跳到片尾,这样就知道这个视频的整个ts切片集合的终点是多少了,因为起点全部为0作开始,那么我们知道把这个集合下载下来即可。

但是还有一个重要的地方,就是视频的清晰度要怎么选择呢?

经过实验发现这个网站的视频清晰度是文件的前缀。实验源流很简单,切换不同清晰度观察ts文件名称变化。

那么再看.ts文件后面”?“拼接的参数是什么呢,通常它表示用户的一些属性,如IP地址,浏览器内核信息等,这些都不用管。

下面开始想办法下载这些ts文件。

第一步:下载python程序,以及PyCharm编程软件

第二部:调PyCharm字体,背景,快捷键,等

第三部:开始写程序

其实我很久都没有用过python了,很多东西都是想起来了网上临时找的。先把要用的几个包导进去,然后用def定义方法,方法比较简单用selenium这个包里面的webdriver调用浏览器打开要下载的文件地址即可。浏览器有这样一个特点,如果你请求返回的不是html页面,他就会把这个下载下来,这样他就能实现自动下载了。

不过需要注意的几点是,根据ts分片的集合规则,建立一个循环实现动态修改文件数再拼接参数,还有线程等待时间,当一个文件下载完成后要立即关闭浏览器,这时候一定要确保文件已经下载完毕才可以关闭浏览器,所以每个线程等待时间是5秒钟。应该根据目标下载速度自行设置,最终呢把程序跑起来遍历循环是可以把所以ts文件下载到的。

补充:.ts文件可以单独进行播放,但是一个片段时长只有5秒钟,所以需要使用ts整合工具将他们拼接成一个完整的mp4视频。

浏览器选择,通常使用谷歌浏览器,但是程序跑起来会一直在屏幕前面打开关闭,打开关闭,打开关闭很烦人,所以应该用无头浏览器在后台跑,有的网站具有反爬虫机制,所以还需要自己想办法解决。




转载请注明:http://www.aierlanlan.com/rzgz/971.html