• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

JamCh01/github_relationship: a simple spider for github instead of api

原作者: [db:作者] 来自: 网络 收藏 邀请

开源软件名称:

JamCh01/github_relationship

开源软件地址:

https://github.com/JamCh01/github_relationship

开源编程语言:

Python 100.0%

开源软件介绍:

github_relationship

目的

获得以目标用户为起点的,六度人脉理论

实现

一般

使用Python完成数据的抓取,存入适当的数据库中,可以很简单的获得用户与用户之间的关系,用于与repo的关系。
具体分为Neo4j,MariaDB,MongoDB的版本,如果发现了不错的数据库会增加对应的版本。

约定

关系的完善

用户的关注是个人行为,因此互相关注并非一条关系(指程序中的each)。将互相关注的这种关系拆分为4份,A关注B,B关注A,A是B的粉丝,B是A的粉丝。

##版本

使用Neo4j的版本

已经实现用户与用户之间的关系,但测试发现:

level0 0:00:03.252803
level1 0:01:12.411496
level2 1:23.26.322980
level3 在9小时内未遍历完成

在push时候,数据库中有40k的节点数量,协程已经不能满足效率了。 后续会补充star,repo等节点,或者现在就做?

为什么放弃

很简单在做完关系的完善部分后,效率尿崩,而且可能是因为节点和关系的数量不断增加,即便不更改关系效率依然很慢。如图~

使用MariaDB的版本

已经实现用户与用户之间的关系,目前正在稳定的运行。 测试发现,以我为起点的用户基数如下:

SELECT COUNT(*) FROM relationship WHERE level=0; //零度人脉(目标用户自己)
1
SELECT COUNT(*) FROM relationship WHERE level=1; //一度人脉
39
SELECT COUNT(*) FROM relationship WHERE level=2; //二度人脉
616
SELECT COUNT(*) FROM relationship WHERE level=3; //三度人脉
25280
这里讨论的人脉数目并非是用户节点或者用户总数,而是在某度人脉中的关系的总量。如果刻意需要查询用户数目,可以使用如下的操作:
SELECT DISTINCT COUNT(user_name) FROM relationship WHERE level=1; //查询零度人脉(目标用户自己)中的用户总数
1
SELECT COUNT(T.A) FROM (SELECT DISTINCT(user_name) AS A FROM relationship WHERE user_name!='HolaJam' AND level=1) T  //查询一度人脉中的用户总数
24

使用MongoDB的版本

todo

期望

使用Flask展现数据,使用echarts描述数据。




鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap