知难而上,砥砺前行

Apoc导入及Neo4J数据动态交互可视化

今日知图

异常处理

如果vi异常退出,在磁盘上会保存有交换文件

下次再使用vi编辑该文件时,会看到多了个.swp文件。按字母可以删除文件!

保存退出

0.说在前面1.数据处理2.Apoc导入3.Neo4J导入展示4.Web开发5.动态交互可视化6.可视化展示7.作者的话0.说在前面

回顾

之前发过一篇天眼反爬虫文章,如果认真看了的,会发现我研究的知识图谱与这个爬虫很相关,所以我本片文章将利用天眼数据来进行图数据库存储,及可视化!

关于下面所涉及的知识点,基本上以前没有学过,那么如何高效的学习以及实现呢,理论or实战

难点

第一:这次的存储不是普通的存储方式,也不是用代码来实现导入,而是使用Apoc来进行导入,从0开始入坑Apoc;

第二:cypher语法学习,从0入坑;

第二:这次的可视化不是之前学到的d3.js而是neovis.js,从0入坑;

吐槽

关于Apoc的难点,由于之前从来没学过,一脸懵逼,在我处理过程中,发现之前的cypher语法基本忘完!在使用Apoc使用的时候卡在一个地方,卡了一下,我仍然没有放弃,卡了一下午与一晚上,直到最后关门了才回去,回去后问大佬,就被顶了回来,真的气炸了,人与人的交流就这么难?

我就不信了,做不出来,就这样,昨日下午,重拾心中的那颗地雷,重新开始搞,然后成功了,怎么成功的呢,后面详细介绍。

学习方法

这次apoc及可视化成功关键是什么,自己反思了一下,成功之处在于:换角度思考,这里说的换角度以实际例子来说明,首次接触apoc,一直想着通过foreach的语法去循环遍历json的key与value,直接取出来,设置label,可是在neo4j中,label是字符串去掉双引号,我就死循环在这里了,如何将一个字符串去掉双引号,前日问了大佬,直接给我说,你去写个函数,这能写函数?我想说。。可以写吗?后来查验,不能写,也不会写,我就放弃了这个思路,换个角度,从设置属性在删掉属性,取属性来解决,终于搞定了,虽然思路绕了点,但是我成功了。这就是换角度思考的作用,从一个小问题卡死半天,到几分钟就可以解决。

这里可视化并没有按照我所学的d3,为何?很简单,想学更多知识,想研究更多,对的,就是想折腾更多,生命不息,折腾不止!我就是喜欢爱折腾,我就喜欢尝试新的,新的导入方式,新的可视化方法。就这么简单,多多尝试,你会有不一样的收获!

如何学习,如何解决问题?当然是谷歌,百度我不用,谷歌啥,什么作为关键词?这些都是很重要的问题,学会搜索,才抓住了根!以这里的实际问题为例:对于apoc,我解决是直接看api解决的,真的英文api比中文api好太多,你不得不信,虽然英文很伤,但还是要看!

其次,我极力推荐的一个工具就是,,,GitHub,我用它解决了我的可视化问题,就这么简单!怎么搜索,直接搜neo,js,就可以了,为什么这么搜索?neo4j是数据库,js是可视化技术,不管是d3还是这里的vis都是js扩展,这么宽的搜索,必然会有很多内容呈现。

当更多显现于你的眼前,你需要做的就是筛选,如何筛选?那就是精确化搜索

以上就是我忙碌的一日左右的收获,现在分享给各位,欢迎各位留言交流!

下面来实战一下我的研究!

1.数据处理

这里主要介绍数据处理,分为总数据,节点数据与边数据!

总数据:tianyan.json

看到如下数据为nodes与relationships相关信息

提取关系:rel.json

为了后续处理方便,直接将relationships后面的所有数据放在另外一个单独文件:rel.json

这里完全没有必要手动,在爬取收据的时候,直接分开写入即可,非常简单!

数据如下:

2.Apoc导入

节点创建

apoc语法在第一行,后面 的都是cypher语法,这里我通过直接给节点设置一个labels属性,后面对这个节点定义label的时候,直接访问就可以了,然后删除掉这个labels属性,就是一个完美实现!

这里的处理就是卡了我半天的代码,就这里,我自己实现了,这就是代码给我的乐趣~~~

注意:tianyan.json以及后面的数据放在根目录,比如D盘就直接在D盘,不要往某个文件夹下放,访问不到!

设置节点label

这里就是上面节点创建后,为节点设置label的难点处理!

节点去重

有两个节点是重复的,如下图所示:

原始数据节点:

导入节点:

去掉重复节点,如下图所示:

创建人与公司关系

这里首先我们根据上图,可以知道,首先创建人与公司关系,人指向公司,如下面所实现!

创建公司与公司关系

上面图可以看到,公司之间还有关系,这里创建公司与公司关系!

3.Neo4J导入展示

最后成功导入后,如下两图对比:

我们将其与天眼官网的图对比,一模一样~~,成功!!!

4.Web开发

这里使用Python web的Django框架进行搭建Web服务!

利用Pytcharm一键创建Django项目后,需要做下面配置!

配置urls.py

配置views.py

上述两步的意思是,通过访问index直接可以渲染出index.html页面,而这个页面也就是我们最终的可视化Neo4J数据的页面!

5.动态交互可视化

这里可视化使用neovis.js,更多的api使用,查看如下官网!

https://github.com/neo4j-contrib/neovis.js

连接Neo4J

节点可视化

关系可视化

页面初始化展示

6.可视化展示

支持cypher查询及点击节点查看信息等!

7.作者的话

最后,您如果觉得本公众号对您有帮助,欢迎您多多支持,转发,谢谢!

更多内容,请关注本公众号知识图谱系列!

我今天才知道,我之所以漂泊就是在向你靠近。

--《廊桥遗梦》

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181109G01UG400?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券