最近我们实习生清风小猪正在学习和实践python数据分析。一遍又一遍的抓取信息,比如粉丝数、关注关系、发布时间、阅读量、回复数、标题关键词、地域分布……然后将这些数据整理出来,通过各种方式将数据可视化图表,然后分析诸如:用户什么时候喜欢发帖,什么标题更容易被点击,哪个地区的用户最喜欢评论,哪个UP主最用心等等。这些案例和分析报告已经正在整理中,陆续分享给大家。今天要给大家展示的是数据分析过程的一个副产品:知乎/哔哩哔哩百大大V排行榜这个排行榜不是一次性的结果,而是每周更新一次。所以从这里也可以看出榜单大V在过去一周的用户增长和排名变化。URL/源码/文档见文末。微博早期有一个“粉丝排行榜”。您可以查看谁拥有最多的关注者。现在好像取消了。知乎、哔哩哔哩等以内容为中心的网站并没有正式提供这样的列表。不过,也有一些吃瓜群众(比如我)或多或少有些好奇,谁是“头部”用户?这两个平台的关注人数是公开数据,不像微信公众号。所以只要把用户一一过一遍,就可以找出哪些用户的“粉丝”多。但显然,我们不可能手动完成这样的事情。这两个平台的账户数量都超过了1亿。我们需要程序来做到这一点。即使你使用一个程序,数以亿计的用户中的每一个都会检查它。假设一秒钟做10次检查,那么检查需要100多天。所以我们需要改进“算法”:在知乎上选择几个大V用户(其实我们先从“张家伟”开始),只查看他们关注的用户。如果发现有超过10000个follower,则将V添加到大V队列的末尾,直到遍历整个队列。然后对所有找到的用户进行排序。因为一般来说,一个大V后面总会跟着其他大V,所以几乎所有的大V都是这样包含的。B站上也是如此,不过选择了今年视频播放量超过50万的UP主作为初始大V队列。然后通过他们关注的人来更新数据。当然,这种方法也有遗漏的可能。比如我们抓到的队列中可能有某个大V因为某种原因没有被任何用户关注,所以他不会被存储在排行榜中。虽然从统计学的角度来看,这个概率很小。但是我们也为此做了一个补偿,就是一旦你发现某个大V不在列表中,你可以通过页面顶部的输入框提交他的主页链接,我们就会收录排在队列中,下次更新会加进去。有了这个排名,平台上的大V都有谁一目了然。更进一步,你还可以从细节中看到一些有趣的东西。举几个例子:B站UP主“景汉卿”上周因为被某公司恶意抢名而受到更多关注,粉丝增长超过100万,上周上升了24个名次。我不熟悉这个UP主。我看是因为一个维权相关的视频引起了关注。知乎上排名靠前、增长最快的是自己的几个账号:知乎日报、刘看山、知客。丁香博士超越张家卫成为知乎一哥,两人的地位远高于后者。知乎榜单上只有一个用户的关注度是负增长:不要脸的铜矿。知乎老用户应该都知道,还有一些历史遗留下来的八卦。这个账号有65万粉丝,但现在还没有答案。通过数据的组织和可视化,人们往往会发现一些平时不被注意的信息。本排名工具只是一个练手小程序,功能简单,没有手机端适配。不过类似的工具对于需要运营知乎账号的新媒体从业者,或者榜单上的创作者来说,还是很有用的。普通用户也可以从列表中发现一些宝藏作者/UP主。这个案例对于想做爬虫的同学来说是一个很好的套路案例。监控商品价格波动、新品发布、库存变化、剧集更新、明星微博等都可以使用类似的方法。虽然有很多工具可以做类似的工作,但如果你自己几行代码就可以解决问题,这将大大提高您的竞争力。这个项目的实现有点特殊,它的数据是另一个分析项目的副产品,是用scrapy爬取的。所以在这种情况下,我们直接以原始数据的形式给出。具体scrapy爬取部分的代码会在后续的项目中提供。本项目使用django搭建展示页面,前端展示使用Datatables表格插件。定时爬取是通过linux下的cronjob功能实现的(windows可以使用定时任务),使用requests模块进行爬取。下面是我之前写的几篇文章,对掌握爬虫爬取很有帮助:requests:让你的爬虫开发效率提高8倍chrome开发者工具,解决一半的爬虫问题【编程课堂】windows计划任务排名网页已上上线了,不过目前只放在测试服务器上,带宽不大。如果文章发出后无法访问,可能是因为瞬时访问太多(这好像是常态。。。),请稍后再试。如果您觉得这个功能有用,或者有其他建议,可以在本文下方留言,我们会在后续做进一步的更新。在浏览器中打开rank.python666.cn,进入排名页面。想要获取源码和详细文档,请在公众号(Crossin的编程课堂)中回复关键词:排行----这里顺便打个小广告:近期我们编程课堂计划推出爬虫学习群,目标是让有点python基础的同学可以通过几个案例快速上手常用的爬虫套路,为后续进阶打下基础。这是一个付费学习小组。详情参见:3周,Crossin带你学爬虫
