Python + Neo4j(安装)可视化分析漫威十年人物关系图谱 |
您所在的位置:网站首页 › 巫师人物关系图谱 › Python + Neo4j(安装)可视化分析漫威十年人物关系图谱 |
目录 1 数据爬取 1.1 漫威人物关系图谱网站 1.2 爬取人物关系数据 2 Neo4j的安装及服务启动 2.1 Neo4j下载安装 2.2 开启Neo4j服务 3 数据准备 3.1 加入列名 3.2 放入本地Neo4j的import文件 4 数据可视化 4.1 加载"names_message.csv"文件 4.2 加载"relation_message.csv"文件 4.3 查看人物关系图谱 4.4 筛选人物关系 CSV 文件 GitHub 地址:https://github.com/leungll/Marvel-File 1 数据爬取 1.1 漫威人物关系图谱网站1. 网址传送门: https://graphics.straitstimes.com/STI/STIMEDIA/Interactives/2018/04/marvel-cinematic-universe-whos-who-interactive/index.html 注:网站被墙,因此很多朋友反应网站打不开,但是用梯子是可以访问的。另外,我会将爬下来的 csv 文件的 github 地址直接贴在下文中,有需要的朋友可以自取。 2. 网站介绍:网站是基于 Graph 技术开发的,主要是关于漫威人物、漫威电影的图谱。 3. 网站一览 首页: 人物关系: 点击头像,可看到人物的详细信息:(钢铁侠!! 漫威宇宙系列电影: 注:浏览器推荐使用 Google Chrome 1. 打开 F12 调试,选择 “Network”(注意是在首页) 2. 关键词搜索( Ctrl + f ),输入“marvel-data.json” 3. 进入“marvel-data.json”,复制 json 接口的 URL 在这里,我们主要需要爬取的数据是 “characters” 与 “relationship” 4. python 代码 跑代码之前需要先配置 python 环境,在这里我使用的 IDE 是 PyCharm,PyCharm 的安装见此处:Win10环境Python+Tensorflow+Jupyter入门安装详解 代码中的 url 即刚才在网站上复制的 json 接口 import json import requests headers = { 'user-agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36' } url = 'https://graphics.straitstimes.com/STI/STIMEDIA/Interactives/2018/04/marvel-cinematic-universe-whos-who-interactive/data/marvel-data.json' response = requests.get(url=url, headers=headers) result = json.loads(response.text) num = 0 names = [] item = {0: 'friend', 1: 'enemy', 2: 'creation', 3: 'family', 4: 'work', 5: 'love'} for i in result['relationship']: subject = result['relationship'][i]['id'] object = result['relationship'][i]['target_id'] if subject not in names: names.append(subject) if object not in names: names.append(object) relation = int(result['relationship'][i]['relationship']) with open('relation_message.csv', 'a+') as f: f.write(subject + ',' + object + ',' + item[relation] + '\n') for j in names: num += 1 with open('names_message.csv', 'a+') as f: f.write(j + ',' + str(num) + '\n') for k in result['characters']: id = result['characters'][k]['id'] name = result['characters'][k]['name'] status = result['characters'][k]['status'] species = result['characters'][k]['species'] with open('message.csv', 'a+') as f: f.write(id + ',' + name + ',' + status + ',' + species + '\n')5. 运行完毕后会产生三个 csv 文件 csv 文件 github 地址:https://github.com/leungll/Marvel-File 至此,数据爬取部分已经完成。 2 Neo4j 的安装及服务启动 2.1 Neo4j 下载安装1. 进入官网下载:Neo4j Deployment Center - Graph Database & Analytics 若点击之后网站没有弹出下载提示,则点击此处下载: 2. 解压安装包: 注:切记安装路径不要含任何中文字符或空格(例如文件名为 “Program Files” ),否则远程服务器访问本地数据库时会乱码,导致无法读取数据 1. 管理员身份打开 Windows PowerShell 2. 启动 Set-ExecutionPolicy -ExecutionPolicy RemoteSigned Import-Module '(neo4j文件目录)\bin\Neo4j-Management.psd1' Invoke-Neo4j console3. 访问服务器 localhost:7474 4. 输入密码 初始用户名:neo4j,初始密码:neo4j 5. 之后服务器会要求你修改密码 生成的三个 csv 文件中,“names_message.csv” 即角色,“relation_message.csv” 即人物关系情况 3.1 加入列名1. 在 “names_message.csv” 中 2. 在 “relation_message.csv” 中 182 个人物节点已生成 4.2 加载 "relation_message.csv" 文件 LOAD CSV WITH HEADERS FROM "file:///relation_message.csv" AS relations MATCH (entity1:people{name:relations.subject}) , (entity2:people{name:relations.object}) CREATE (entity1)-[:rel{relation: relations.relation}]->(entity2)1144 对人物关系已建立完毕 4.3 查看人物关系图谱1. 取消限制(去掉"LIMIT 25") 运行 2. 显示人物及关系 选择全屏 替换人物名称 替换人物关系 1. 托尼·斯达克的朋友 match p=(n:people{name:"tonys"})-[:rel{relation:"friend"}]->() return p;其中「thor」为「雷神」,「stever」为「美队」,「blackw」为「黑寡妇」,「vision」为「幻视」,「peterp」为「蜘蛛侠」,「bruceb」为「绿巨人」 2. 美队的女友 match p=(n:people{name:"stever"})-[:rel{relation:"love"}]->() return p;其余的查询类似我们熟知的 SQL 语句,大家可以多多尝试。 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |