昨天小编做了一期Python+Gephi和金庸笔下人物关系知识图谱,大家都觉得这个系列很有意思,很多人想要小编出一期关于漫威的人物的关系知识图谱,所以今天小编就为大家带来一个可视化分析漫威人物关系的知识图谱,来送给硬核漫威铁粉。
![8437bd390598fc5432b5bb1da6bfc6a3.gif](https://i-blog.csdnimg.cn/blog_migrate/a0b588704facfc889893cca5a9450951.gif)
数据爬取
![8437bd390598fc5432b5bb1da6bfc6a3.gif](https://i-blog.csdnimg.cn/blog_migrate/a0b588704facfc889893cca5a9450951.gif)
一|漫威人物关系图谱网站
网址传送门:
https://graphics.straitstimes.com/STI/STIMEDIA/Interactives/2018/04/marvel-cinematic-universe-whos-whointeractive/index.html
网站介绍:
网站是基于 Graph 技术开发的,主要是关于漫威人物、漫威电影的图谱。
网站一览:
首页:
![636a443d716d8aee038657ba008c7f89.png](https://i-blog.csdnimg.cn/blog_migrate/12c8d0639899a591f4b388fe1e49f3b9.png)
人物关系:
![c39f130a754a07423d27c8de93f63292.png](https://i-blog.csdnimg.cn/blog_migrate/04680041b6902f706f6a15a7ec77d2e0.png)
点击头像,可看到人物的详细信息:(钢铁侠!!
![08e9b7f2d78da60971403954156146b0.png](https://i-blog.csdnimg.cn/blog_migrate/5b1ad7e52bf468f8ed20e08aa55367ef.png)
漫威宇宙系列电影:
![a1195ae1842ac8980850fc8dc7527070.png](https://i-blog.csdnimg.cn/blog_migrate/eeaa71dc7fb219b44809927ad16c4483.png)
二|爬取人物关系数据
注:浏览器推荐使用Google Chrome。
1.打开F12调试,选择“Network”(注意是在首页):
![bd6c03c1798208a86e84c5db34f60528.png](https://i-blog.csdnimg.cn/blog_migrate/c46add5e01ca8e48ac3c21a5d7da3b07.png)
2.关键词搜索(Ctrl + f),输入“marvel-data.json”:
![ffe097a347c6a9a9cc88f3fa2b11ebc9.png](https://i-blog.csdnimg.cn/blog_migrate/f01a4ed6e8359438583333ca0a11fe32.png)
3.进入“marvel-data.json”,复制json接口的URL:
![3751f6124604d5d2e4041583d9f56f48.png](https://i-blog.csdnimg.cn/blog_migrate/afeddc1ff57f771c55f295f4fa26268d.png)
在这里,我们主要需要爬取的数据是“characters”与“relationship”:
![73f446ec27ef6a16409ab14738cf8458.png](https://i-blog.csdnimg.cn/blog_migrate/6d5d2c491f5ca7d85365155e395011ae.png)
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
![768ab02b1521e96364aaa8ba7ff6a0df.png](https://i-blog.csdnimg.cn/blog_migrate/d9eeaac57668dd038a73565306b4fd6c.png)
至此,数据爬取部分已经完成。
![8437bd390598fc5432b5bb1da6bfc6a3.gif](https://i-blog.csdnimg.cn/blog_migrate/a0b588704facfc889893cca5a9450951.gif)
Neo4j的安装及服务启动
一丨Neo4j下载安装
1.进入官网下载:
https://neo4j.com/download-center/#releases
![2da806240631d60074cf6aa5bbd92520.png](https://i-blog.csdnimg.cn/blog_migrate/82e1f855118afdce8c0cb2f963a335c9.png)
若点击之后网站没有弹出下载提示,则点击此处下载:
![7568b9a06f29b8c098c1109b4de39e7e.png](https://i-blog.csdnimg.cn/blog_migrate/17c9579c0c02afebba6eb1b3209935a7.png)
2.解压安装包:
注意:切记安装路径不要含任何中文字符或空格(例如文件名为“Program Files”),否则远程服务器访问本地数据库时会乱码,导致无法读取数据
![0a0e433c39939ffb1d29e97bb3767b55.png](https://i-blog.csdnimg.cn/blog_migrate/948bcdeb6f9747dc1328d3ee6a8100e2.png)
二丨开启Neo4j服务
1.管理员身份打开Windows PowerShell:
![b4f0a1a967e0f6df1ae9de65c4b7e51e.png](https://i-blog.csdnimg.cn/blog_migrate/e225fab35295b7c3dc6394d0c4691e61.png)
2.启动:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned
Import-Module '(neo4j文件目录)\bin\Neo4j-Management.psd1'
Invoke-Neo4j console
![bd8ded38750bc2e88d7e63943b51ae20.png](https://i-blog.csdnimg.cn/blog_migrate/495ee4959c475aaf9a91d7eaccad1484.png)
3.访问服务器:
localhost:7474
![0bc80d29f024e52ad8eaba5f68d1bb30.png](https://i-blog.csdnimg.cn/blog_migrate/93a078cff7f63b13468cebe788669282.png)
4.输入密码:
初始用户名:neo4j,初始密码:neo4j
![883fa844f54282baff8b2cce09ed5e03.png](https://i-blog.csdnimg.cn/blog_migrate/d39b94ef7fd0397a6aca509f118a5ef4.png)
5.之后服务器会要求你修改密码:
![d94fffcca3e5d2ba26fc7c8b3a74bb08.png](https://i-blog.csdnimg.cn/blog_migrate/66f6aa830b3a1bbbcb97eacfa0f8ff9e.png)
![8437bd390598fc5432b5bb1da6bfc6a3.gif](https://i-blog.csdnimg.cn/blog_migrate/a0b588704facfc889893cca5a9450951.gif)
数据准备
![8437bd390598fc5432b5bb1da6bfc6a3.gif](https://i-blog.csdnimg.cn/blog_migrate/a0b588704facfc889893cca5a9450951.gif)
生成的三个csv文件中,“names_message.csv”即角色,“relation_message.csv”即人物关系情况。
![8437bd390598fc5432b5bb1da6bfc6a3.gif](https://i-blog.csdnimg.cn/blog_migrate/a0b588704facfc889893cca5a9450951.gif)
加入列名
1.在“names_message.csv”中
![daa08fd7997d56bb4b0808a0abc35e3a.png](https://i-blog.csdnimg.cn/blog_migrate/becde32a0c02db993d870d671624ee4c.png)
2.在“relation_message.csv”中
![4feabc8478582fb77786f99bf4b70904.png](https://i-blog.csdnimg.cn/blog_migrate/5760c2cfc0e63893ff5ec971f122d8ce.png)
![8437bd390598fc5432b5bb1da6bfc6a3.gif](https://i-blog.csdnimg.cn/blog_migrate/a0b588704facfc889893cca5a9450951.gif)
放入本地Neo4j的import文件
![a28af3b8e26f75aa7c4feda3bd66cab3.png](https://i-blog.csdnimg.cn/blog_migrate/921fb43e8d70c17a80ec2e88cb3a0814.png)
![8437bd390598fc5432b5bb1da6bfc6a3.gif](https://i-blog.csdnimg.cn/blog_migrate/a0b588704facfc889893cca5a9450951.gif)
数据可视化
加载"names_message.csv"文件
LOAD CSV WITH HEADERS FROM 'file:///names_message.csv' AS data CREATE (:people{name:data.name, id:data.id});
![ca5e1a7ce0d242cf231135c744f887f0.png](https://i-blog.csdnimg.cn/blog_migrate/c2f78bd88ce15b854f43d137fcfc3c4b.png)
182个人物节点已生成。
加载"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)
![1b256af6f84d0543448de266e2ca988d.png](https://i-blog.csdnimg.cn/blog_migrate/12494b4a775277e585ed74df3fa4a06b.png)
1144对人物关系已建立完毕。
查看人物关系图谱
当一个人问另一个人“敢不敢”的时候,另一个人必须说“敢”,这就是游戏的规则。
1.取消限制(去掉"LIMIT 25"):
![714432e997244e1020785f66b94e6683.png](https://i-blog.csdnimg.cn/blog_migrate/2725d4c6b4146e16c8bb4d30a3141d99.png)
运行:
![71097e7f8670ac39ba7ac8c247ab7f31.png](https://i-blog.csdnimg.cn/blog_migrate/8f79fbb6f0d39d40b0de4549c066478a.png)
2.显示人物及关系
选择全屏:
![e05327a052e5e42733d57608e2f7a0ef.png](https://i-blog.csdnimg.cn/blog_migrate/60f5f74e13f8a5b75ad2d92d5b9b61bd.png)
替换人物名称:
![0f8d81dd3b4ddc4191dbf15c872f03b6.png](https://i-blog.csdnimg.cn/blog_migrate/174c7ba9e337aff2251af0facb052c36.png)
替换人物关系:
![5f927ffeab6be9b13ade386732c3ea01.png](https://i-blog.csdnimg.cn/blog_migrate/79b81764d03ec843b7d10febfe0673dd.png)
筛选人物关系
1.托尼·斯达克的朋友:
match p=(n:people{name:"tonys"})-[:rel{relation:"friend"}]->() return p;
![a7ee1b09846cc7cb62fc130397c0fd8d.png](https://i-blog.csdnimg.cn/blog_migrate/8d9b7158b9b342fc0e232681d0b4b84f.png)
其中「thor」为「雷神」,「stever」为「美队」,「blackw」为「黑寡妇」,「vision」为「幻视」,「peterp」为「蜘蛛侠」,「bruceb」为「绿巨人」
2.美队的女友:
match p=(n:people{name:"stever"})-[:rel{relation:"love"}]->() return p;
![2fc5a1f0f111f47002ec54eb4048cf91.png](https://i-blog.csdnimg.cn/blog_migrate/9a6d38d37c48a644c312a5f3fbaa9a09.png)
其余的查询类似我们熟知的SQL语句,大家可以多多尝试。
长按扫码关注我们
中视正宣
中视融媒大数据中央处理平台
公众号:chinadatazs
文章来源:CSND-LL Leung