关于抖音爬虫的复盘

背景

  • 因为腾讯微视这边想知道做抖音的分析是大概一个怎么样的情况,我们可以做个 demo(抓的量极少,9000 个用户包括他们的粉丝和关注),通过数学建模尝试给他们方案(他们也不知道自己想要什么)

过程

主要方法

  • 一开始爬虫组给了两个接口,通过 uid 分别拿到粉丝和关注的(上限最多 5000 个),但是这里拿不到用户的粉丝数和关注数(重要信息),只能根据粉丝数组来算,但是最多 5000 个不准确,后来换了新的能抓精确数的接口
  • 我通过一个 uid 递归抓取粉丝接口,直到拿满 9000 个用户

如何写

  • 通过 python 的 requests 库,加上 ua 请求头(模拟手机登网页),请求接口,抓回来的数据写入 csv
  • 但是抓回来的数据发现了一个问题,就是会错行,如果抖音用户心情那里有换行,会导致 csv 换行,就会错(这个解决办法暂时是不抓心情)
  • 抓回来的数据其实极大,统共粉丝+关注有 1 千多万,并没有想的那么小
  • 一直以为 csv 是只能用逗号,没想到还能用\t 分割,csv 读出来可以选择分割的模式
  • 爬虫不能连续爬,写个循环你以为就完事了吗,马上就被封 ip(表现为拿回来的全是空数组),所以我每次请求 sleep 一秒钟
  • 单线程跑其实挺慢的,如果可以多线程,有 ip 池就好了

结论

  • 做个模型分析的话其实挺好玩的
  • 用 9599 个用户拓展出了 15122878 个用户(1 千 5 百万的用户),其中 1303439 个不重复 id(130 多万)
  • KOL 在 9599 个用户中的占比为 0.115%,即为 9599 个用户中有 11 个 KOL(粉丝大于 1 万即 kol 用户)
  • 把 9599 个用户分成 3 组,用户 A 组 3200 个,用户 B 组 3200 个,用户 C 组 3199 个
    • 用户 A 组:平均粉丝数 89.71,平均关注数 1139.41
    • 用户 B 组:平均粉丝数 109.59,平均关注数 1481.78
    • 用户 C 组:平均粉丝数 69.75,平均关注数 1324.39
  • 然后丢给分析师吧