初探抖音的数据采集,竟然简单到无脑!
最近几天抖音有点火,火到新榜大号上周(3.20-3.25)7天发布了5篇关于抖音的报道,今天还专门建了个“微微一抖”的群。
作为一个数据狗,也该从数据层面研究一下这“一抖”了。
通过分享视频网页源代码获取数据
所有互联网能看到的数据都是可以采集的,抖音肯定也不例外。
普通情况下,我们使用爬虫采集网络信息的时候是基于其网站的前端代码,也就是你在任意位置鼠标右键—查看网页源代码看到的那些。
抖音的视频都在APP上,我们没法查看他的源代码。好在抖音可以分享到微信然后使用浏览器打开查看。
我们右键查看页面源代码,是可以看到该视频数据的:
源代码中我们可以很清楚的看到视频名称和作者的信息。
有趣的是,本来其他人不可见的视频播放数据,前端代码中也做了展示。截图中"play_count":138、"aweme_id":"6536834751905402116"、"comment_count":1和"share_count":1分别代表了该视频的播放数、视频ID、评论数和分享数。
查看该分享视频的url构造可以发现非常的简单,仅由www.douyin.com、share、video 和6536834751905402116四个部分组成,其中前三部分是固定的,唯一变化的是最后一部分视频ID。按照正常的爬虫逻辑,我们只需要使用脚本不断递增该ID,即可实现遍历所有的视频。
实操发现,简单递增视频ID构造的URL视频并不存在。看来抖音对视频的ID是做了加密处理的。尝试分享了几个视频发现,ID有一定的规律,但数据量较小,无法做到解密。时间有限,我们下次再研究视频ID的递增逻辑。
抓包获取视频数据
除了通过网页的源代码采集网络数据外,对于APP信息的采集多通过抓包实现。所谓“抓包”,就是截获手机与服务器之间通信的数据,进行解析获取通信间传递的数据。
我们使用常用的抓包工具Fiddler,获取手机上抖音APP获取视频过程的数据进行分析。
抓包软件截获了手机与aweme.snssdk.com通信的过程,百度该链接确认其为今日头条产品:
开始的几个视频请求地址是相同的,多划几次后发现增加了一个https://aweme.snssdk.com/aweme/v1/feed/?XXXXX的请求地址。这就好玩了,我们都知道feed是流的意思,百度的信息流新闻地址也是feed.baidu.com,可以初步判定,从这个地址请求的数据应该是“流”式的,也就是说至少包含多个视频信息!
解包后发现果然不出所料!
json中包含了作者、视频和背景音乐等多种信息。
高级的是,一次请求,服务器返回了6个视频信息!
和请求规律相同,每下划5次会向feed地址发起一次请求。
剩下的,就可以交给脚本,“躺在床上”无限下划了。
加一些PS:
大量数据背后,理论上我们可以分析抖音的推荐逻辑,毕竟每6个视频一组打包下载,肯定存在某种规律;
采集的信息中包含了作者的性别、年龄、地理位置、学校等信息,用户画像也是可以分析出来的;
追踪作者信息,可以深层次挖掘作者的作品数、获赞数、粉丝数等数据,榜单也可以来一发了;
最开始网页源代码采集的时候我们知道,视频的实际阅读量也是可以采集的,那么视频曝光量也就知道了,曝光量=广告价值;
抖音应该快采取措施封停这种粗暴的采集了,要上车的赶紧……