dyweb / scala-renren

人人好友关系网络

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

scarenren

scarenren是一个基于scala的人人分析工具

构建

项目使用sbt构建,构建环境为jdk1.7 scala2.11 sbt 0.13.8

输出

好友学校统计

在生成的Output-Data.txt

好友关系图

以JFrame的形式展示,并生成在headless_simple.pngheadless_simple.svg

文本格式的好友关系

network.txt中,是语言无关的,可以基于该文本做很多事情。其格式为

-Friend(uid, location, name, url)  // 1
--Friend(uid, location, name, url) // 2
--Friend(uid, location, name, url) // 3
...
-Friend(uid, location, name, url)  // 2
--Friend(uid, location, name, url) // 5

其中-代表是节点,--代表由之前-节点指向该--节点的边。比如在此例中,行1为一个节点,行2代表一个由行1节点指向行2节点的一条边。

PS:存储方式略显拙计。

使用

首先,新建userinfo.ini文件,内容与userinfo.ini.example内类似,用于爬取。

然后,编译并运行需要指令sbt run,代码只在os x环境下使用过,不知道其他系统会不会有问题,第一次编译可能需要时间比较长,需要下载各种库,之后会快很多。

PS: gephi在导出的时候,会有报错,形如

java.lang.InterruptedException: sleep interrupted
	at java.lang.Thread.sleep(Native Method)
	at org.gephi.data.attributes.event.AttributeEventManager.run(AttributeEventManager.java:87)
	at java.lang.Thread.run(Thread.java:745)
java.lang.InterruptedException
	at java.lang.Object.wait(Native Method)
	at java.lang.Object.wait(Object.java:503)
	at org.gephi.graph.dhns.core.GraphStructure$ViewDestructorThread.run(GraphStructure.java:240)

但是对结果没有影响,run的结果还会是success。这些异常似乎catch不住,有待解决。

代码阅读指南(程序执行指南)

程序最主要的类是在renren.scala中,首先程序会读取在userinfo.ini中的用户名密码,然后取得用户的好友列表,最后根据好友列表,生成好友关系图。样例如下,原本是带有名字标签在图上的,但为了保护隐私,已和谐。

另外在画图的时候使用了gephi-toolkit,现行的情况是,根据Modularity来决定节点的颜色,节点度来决定节点的大小。

未完成

  • 优化friendnetwork.scala中的marshal,不需要读入文件时都存入内存,边读入边遍历,可使用解释器模式
  • grapher.scala优化画图风格
  • actor使用到了外部mutable的变量,会有未定义的行为,以后改善。。。

PS

Code Style在现在看来极其差劲。。。大家将就着看看吧。。

About

人人好友关系网络


Languages

Language:Scala 100.0%