20200708 - 初步使用

2024-06-15 16:58
文章标签 20200708 初步 使用

本文主要是介绍20200708 - 初步使用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

2020/07/08 -

引言

本篇文章我来简单介绍一下怎么利用python来使用这个neo4j,不涉及具体原理,本次只是描述具体的使用过程;从这个过程中再分支出具体的使用过程。
本次我测试的数据是两个,一个是DNS数据,文本内容是host,dns,还没有涉及请求的是什么,因为我想不通这个关系是什么;另外一个数据是网站请求数据,这个数据就稍微多了几列,但核心就是host和网站的内容。那么从这两个数据中,我就是把这个访问的关系给绘制出来,具体挖掘什么信息,比如什么社群发现,我是暂时想不出来这层语义是什么。


本文主要阐述了使用CSV格式的数据,数据中只有两个节点的信息(可以多种,代码自行调整),然后绘制他们的关系。代码运行没问题,但也产生了一些问题,目前待解决:
1)如何添加属性等信息
2)如何批量节点信息
3)我这里是采用去重的方式来实现了插入,但是正确的姿势应该是什么呢?


搭建数据库

这里使用docker的方式进行搭建,一开始选了最新版,在修改密码的界面一直卡着,通过开发者工具的形式,我就发现了原因是他某个请求发完了127.0.0.1,感觉是个bug。所以最后选择了neo4j:3.4。启动命令:

docker run -it -p 7474:7474 -p 7687:7687 neo4j:3.4

其中7474是web的接口,同时看到后面的python的调用方式,估计他是使用httpapi来通信的把。

python库

python库使用的是py2neo,正常安装就好了

全部代码

#! /bin/python2
#coding:utf-8
#Author:VChao
#2020/07/08from py2neo import Graph, Node, Relationship
#连接数据库
graph = Graph("http://10.245.142.250:7474",username = "neo4j", password = "wangchao")
#删除所有数据
graph.delete_all()
#读取数据
with open("src_dst_ip.csv","r") as f:data = f.readlines()data = map(lambda x: x.strip(), data)
##这里插入数据的方式是先去重,然后对每个IP都建立一个节点,并将这个节点都存入列表中
##读取原始数据的关系,每次都获取出来关系信息,按照ip从前面创建的节点中来加入关系
##因为创建关系的时候,需要利用Node对象作为点
src_ip_list = list(set(map(lambda x: x.strip().split(",")[0], data)))
dst_ip_list = list(set(map(lambda x: x.strip().split(",")[1], data)))
relation_list = list()
src_node_list = []
dst_node_list = []for one in src_ip_list:src_node_list.append(Node("host", name = one))
for one in dst_ip_list:dst_node_list.append(Node("dns_server",name = one))
for one in data:src_ip, dst_ip = one.split(",")src_node = src_node_list[src_ip_list.index(src_ip)]dst_node = dst_node_list[dst_ip_list.index(dst_ip)]r = Relationship(src_node, "query", dst_node)#在数据库创建这个东西,注意看这里是两个节点和一个关系一起创建的s = src_node | dst_node | rgraph.create(s)

代码分析

  1. 创建节点Node
    Node("host", name = one),这个代码中,第一个参数是Label的信息,第二个是name。相当于create (host|one),这样的语句。虽然两个节点对象都是这种创建方式,但是插入的两种类型,只有一个默认按照name来显示节点,不过可以在界面选择不显示的点,设置让他显示这个名字。不过我暂时还没找到其他的一些关于这个节点属性的插入方式,这个后面解决一下。

  2. 创建关系
    没什么多说的,Relationship(src_node, "realation label", dst_node)。最后的graph.create(s)节点有点意思,这个意思是批量创建吗?还是说必须是这种存在关系的三个变量。而且这里有一个问题我还是没注意到的,就是实际上某个节点可能已经创建好了,这种情况是怎么处理的,可能要看这个API来解决了。

  3. 节点的重复性
    一开始的时候,我对他这个节点的属性和其他的东西理解的不清楚,以为这些都是唯一的,但是测试过程中发现如果我执行两次同样的插入命令,结果会出现两个节点;这两个节点信息都是一样的, 只有id不一样,可以从界面上看到这个信息。所以,这才产生了前面先去重然后将这个列表存起来的方式。不知道是不是还有别的方式。

这篇关于20200708 - 初步使用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1064043

相关文章

C语言中联合体union的使用

本文编辑整理自: http://bbs.chinaunix.net/forum.php?mod=viewthread&tid=179471 一、前言 “联合体”(union)与“结构体”(struct)有一些相似之处。但两者有本质上的不同。在结构体中,各成员有各自的内存空间, 一个结构变量的总长度是各成员长度之和。而在“联合”中,各成员共享一段内存空间, 一个联合变量

Tolua使用笔记(上)

目录   1.准备工作 2.运行例子 01.HelloWorld:在C#中,创建和销毁Lua虚拟机 和 简单调用。 02.ScriptsFromFile:在C#中,对一个lua文件的执行调用 03.CallLuaFunction:在C#中,对lua函数的操作 04.AccessingLuaVariables:在C#中,对lua变量的操作 05.LuaCoroutine:在Lua中,

Vim使用基础篇

本文内容大部分来自 vimtutor,自带的教程的总结。在终端输入vimtutor 即可进入教程。 先总结一下,然后再分别介绍正常模式,插入模式,和可视模式三种模式下的命令。 目录 看完以后的汇总 1.正常模式(Normal模式) 1.移动光标 2.删除 3.【:】输入符 4.撤销 5.替换 6.重复命令【. ; ,】 7.复制粘贴 8.缩进 2.插入模式 INSERT

Lipowerline5.0 雷达电力应用软件下载使用

1.配网数据处理分析 针对配网线路点云数据,优化了分类算法,支持杆塔、导线、交跨线、建筑物、地面点和其他线路的自动分类;一键生成危险点报告和交跨报告;还能生成点云数据采集航线和自主巡检航线。 获取软件安装包联系邮箱:2895356150@qq.com,资源源于网络,本介绍用于学习使用,如有侵权请您联系删除! 2.新增快速版,简洁易上手 支持快速版和专业版切换使用,快速版界面简洁,保留主

如何免费的去使用connectedpapers?

免费使用connectedpapers 1. 打开谷歌浏览器2. 按住ctrl+shift+N,进入无痕模式3. 不需要登录(也就是访客模式)4. 两次用完,关闭无痕模式(继续重复步骤 2 - 4) 1. 打开谷歌浏览器 2. 按住ctrl+shift+N,进入无痕模式 输入网址:https://www.connectedpapers.com/ 3. 不需要登录(也就是

Toolbar+DrawerLayout使用详情结合网络各大神

最近也想搞下toolbar+drawerlayout的使用。结合网络上各大神的杰作,我把大部分的内容效果都完成了遍。现在记录下各个功能效果的实现以及一些细节注意点。 这图弹出两个菜单内容都是仿QQ界面的选项。左边一个是drawerlayout的弹窗。右边是toolbar的popup弹窗。 开始实现步骤详情: 1.创建toolbar布局跟drawerlayout布局 <?xml vers

C#中,decimal类型使用

在Microsoft SQL Server中numeric类型,在C#中使用的时候,需要用decimal类型与其对应,不能使用int等类型。 SQL:numeric C#:decimal

探索Elastic Search:强大的开源搜索引擎,详解及使用

🎬 鸽芷咕:个人主页  🔥 个人专栏: 《C++干货基地》《粉丝福利》 ⛺️生活的理想,就是为了理想的生活! 引入 全文搜索属于最常见的需求,开源的 Elasticsearch (以下简称 Elastic)是目前全文搜索引擎的首选,相信大家多多少少的都听说过它。它可以快速地储存、搜索和分析海量数据。就连维基百科、Stack Overflow、

flask 中使用 装饰器

因为要完成毕业设计,我用到fountain code做数据恢复。 于是在github上下载了fountain code的python原代码。 github上的作者用flask做了fountain code的demo。 flask是面向python的一个网站框架。 里面有用到装饰器。 今天笔试的时候,我也被问到了python的装饰器。

mathematica的使用

因为做实验用到Bloom filter这一技术,Bloom filter里面的数学公式可以用来画图。 那么用什么画图软件比较好呢? 当然是Mathematica啦。 利用代码Plot[{y=x},{x,0,100}] 就可以画出比较好的图 简直nice