Python爬虫之抖音视频批量提取术

工具环境

语言:Python3.6

编辑器:Pycharm

数据库:MongoDB

工具:Charles

爬取思路

爬取站点:https://www.douyin.com/

这里的爬取思路非常简单,以至于我会觉得这篇文章会有些空洞。当你抓包正确配置好环境后,打开抖音软件,做一些简单的操作,Charles就会给你返回如下的数据,这些数据其实就是服务端给你返回的数据,里面包含所有我们需要的信息。比如我们今天要下载的自己点击过的,喜欢的视频链接等


你操作软件时,看一下Charles中每条数据的变化情况,你会发现,你个人主页下面的链跟videos、feed和likes和这三条数据有关,每一次你做相应的操作,下面就会多出一些请求链接

那我们别的先不管,看下每个请求中的数据,有没有我们想要的数据,随便看一下某个链接中的返回数据


可以看到这里有play_addr,再一看链接中有video字样,基本八九不离十了。因为我已经验证过了,这里的信息就是如我们猜测的那样,包含视频的全部信息

那我们其实就需要模拟这里的请求链接即可,先看下请求中都包含哪些必要的信息,你多看几个就发现,真正变化的就几个固定的参数,其中红线以上的部分都是和设备相关的信息和app信息,真正核心加密的参数就只有,mas,as和ts。这里我先自己网上找了下有没有相关的轮子可用,索性狗屎运比较好,正好找到了,地址在这:https://github.com/AppSign/douyin

套用即可,而且这位大佬的所有破解,都是和字节跳动有关的,我有点觉得这个就是官方让员工自己放出来的。按尼胃,我们拿到了加密的参数的实现之后,后面就太简单了


看上面那位大佬的代码提取视频那里,跟视频相关的关键参数就是这个aweme_id,我们拿到它之后,后面直接构造提取原视频的请求即可

那么废话不说,上码走起

核心请求:


这里我们将设备参数,app信息,用户一起用作查询参数,再与获得的token一起,发送给getSign函数,构造加密数据,最后把这些数据组合成的字典放在一起,请求我们的喜欢的链接(https://aweme.snssdk.com/aweme/v1/aweme/favorite/)即可拿到对应的response数据。大家可能会发现,我这里漏掉了一个max_cursor参数,这是因为,第一次发送请求时,这里的参数是0,之后我们请求了数据后,如果返回的has_more是1,就代表有数据,那么下一次我们请求的时候,就需要带上上一次的max_cursor。就可以理解为我们刷数据,往下翻页吧

所以这也就是为什么我在这个地方做了返回,就是为了方便上一层调用,看下这里如果有数据的话,我们就继续翻页下载

翻页:

def grab_favorite_main(self, user_id):

count=1

self.logger.info("当前正在爬取第         

作者:  张小鸡 

知乎ID:https://www.zhihu.com/people/mr.ji

猜你喜欢

转载自blog.csdn.net/qq_40925239/article/details/89025536