最近在做今日头条文章数据抓取的过程中,发现视频地址的获取较为复杂。在源码与浏览器配合下发现对应的解决思路,故此记录一下。
很多人学习python,不知道从何学起。
很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手。
很多已经做案例的人,却不知道如何去学习更加高深的知识。
那么针对这三类人,我给大家提供一个好的学习平台,免费领取视频教程,电子书籍,以及课程的源代码!??¤
QQ群:623406465
目录
- 需要的Python模块
- 实现思路
- 代码及运行结果
正文
1.需要的Python模块
模块主要有requests(或者aiohttp),PyExecJS。 前者是请求文章的源码,后者是Python执行JS代码的依赖库,主要是生成视频地址 12
- 实现思路一. 需求主要是替换原有文章中的视频及图片地址为本地储存地址,因此需要下载资源,在针对视频分析时通过抓包发现对应的视 频地址,但是在源码及相关接口响应中都未发现对应的视频地址参数。
通过文章源码(HTML)浏览器渲染发现video标签后期生成,视频地址也存在,那么此标签肯定通过JS生成,通过查找发现关键JS所在标签script
二. 分析该地址对应的js发现里面有生成video标签的方法,在依次推断这里面有视频地址生成的方法,如下:
这里可以清楚我们所要的视频地址从何而来,下面是该方法:
分析该方法,发现其中有一个关键参数t,另外在图二中我们发现方法e,填入的参数v,这里让我想到之前抓包中有个接口返回的结果对应的main_url var u = o.data.video_list, h = u.video_1, v = h.main_url, 123三. 该接口为:
https://i.snssdk.com/video/urls/1/toutiao/mp4/v0201f800000bub4vq2vtt9a5oknnlp0?callback=tt__video__3e9q4q
接口返回结果中:
同时,该接口中的参数(v0201f800000bub4vq2vtt9a5oknnlp0)在源码中即可找到,可用正则匹配。
可以大胆尝试一下,将main_url值加入生成视频地址的方法中尝试下,另外需要将JS最下面的几个参数加上即:var c = new Array( - 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 62, -1, -1, -1, 63, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, -1, -1, -1, -1, -1, -1, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, -1, -1, -1, -1, -1, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, -1, -1, -1, -1, -1); 1
我用的是JS调试工具(方便调试,检查代码语法ÿ