安全圈关系可视化分析(安全圈也许就这么大续集)

即将迎来国庆+中秋小长假,部分同事已经请假提前回家,工作氛围感觉渐淡下来,于是开始整理最近以来的工作的总结,以及开始准备节后一个技术沙龙的议题,还有节后的工作计划,闲暇之余聊到了二哥(gainover)之前的“安全圈有多大?”于是又重温了一遍,二哥作为生物学博士,使用生物学中分子的分析方法分析了安全圈的关系。
    二哥通过爬取腾讯微博的数据,以自己为起始点爬取用户的关注了哪些人,通过这种可视化方法能得到很多有意思的信息,下面记录一下实践过程吧~
    
    一、数据爬取
        爬取流程可以参考上一遍文章,流程是一样的,只是爬取的目标从“友情链接”变成了“他的关注”,这两者其实是大同小异的,所以这里省略爬取流程。
        但是关于如何爬取微博中的数据,这里不得不提一下:
        由于新浪微博主站做了数据限制,只显示5页,通过伪造手机端ua发现手机端可加载10页,也就是10*20,可抓取200人关注者。
        (PS:如果有大神有突破数据限制抓取所有关注者请不吝赐教~)

点击查看原图
请求之后会返回20个他关注的人,通过JSON解析可以很方便的取出,但是这里有个小坑,取了cards后,要提取的数据可能不是在第一个,所以需要循环取。
我们以“余弦”作为爬虫起始点开始爬取数据,由于没有开多线程,总过爬取了接近两个小时,大约发起了一共26万请求(2.6w用户*10页),爬行的过程中需要对数据进行入库存储,还需要构造相应的关系数据。
爬取的微博用户数据如图:
点击查看原图

关系数据:

点击查看原图


二、导出数据
  在爬取过程中,开始出现大量非安全圈的微博账号,所以我停止了爬虫开始进行数据整理准备导入。

点击查看原图

直接导出CSV然后将数据整理为以上格式,分别为关系数据和微博用户数据,准备好以上两个数据开始导入

导入节点数据:

点击查看原图


导入边数据:

点击查看原图


此时切换到“图”窗口,看到如下密集的点构成的正方形说明数据导入成功

点击查看原图


三、使用Gephi进行可视化
选择一个布局算法,进行设置后点击应用,然后

点击查看原图

随着时间过去,布局开始慢慢明显,等到点完全分开的时候我们就可以停止布局算法了(PS:布局算法特别消耗CPU和内存)

如图(不小心就玩得没内存了):


我们取消掉,然后停止布局算法。
此时的图应该已经处于展开状态,但是由于点太多,如果我们此时显示所有的微博名字是很吃内存的,我们可以运行一些算法和过滤来让可视化变得友好。

结果一系列操作后,可视化效果变得友好了,如图:

最后我们通过Gephi的Sigma插件生成HTML,

附上地址:http://file.jeary.org/secnetwork/
enjoy~

发表评论