Python + Neo4j(安装)可视化分析漫威十年人物关系图谱[通俗易懂](python详细安装教程)
大家好,又見面了,我是你們的朋友風君子。
目錄
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 篩選人物關系
前言:
最近復聯4大火,筆者看到 “法納斯特” 的博客得到啟示,于是想動手做一個可視化分析漫威人物關系的知識圖譜,做一枚硬核漫威鐵粉。
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.網站一覽
首頁:
人物關系:
點擊頭像,可看到人物的詳細信息:(鋼鐵俠!!
漫威宇宙系列電影:
1.2 爬取人物關系數據
注:瀏覽器推薦使用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.進入官網下載:https://neo4j.com/download-center/#releases
若點擊之后網站沒有彈出下載提示,則點擊此處下載:
2.解壓安裝包:
注意:切記安裝路徑不要含任何中文字符或空格(例如文件名為“Program Files”),否則遠程服務器訪問本地數據庫時會亂碼,導致無法讀取數據
2.2 開啟Neo4j服務
1.管理員身份打開Windows PowerShell:
2.啟動:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned
Import-Module '(neo4j文件目錄)\bin\Neo4j-Management.psd1'
Invoke-Neo4j console
3.訪問服務器:
localhost:7474
4.輸入密碼:
初始用戶名:neo4j,初始密碼:neo4j
5.之后服務器會要求你修改密碼:
3 數據準備
生成的三個csv文件中,“names_message.csv”即角色,“relation_message.csv”即人物關系情況。
3.1 加入列名
1.在“names_message.csv”中
2.在“relation_message.csv”中
3.2 放入本地Neo4j的import文件
4 數據可視化
4.1 加載”names_message.csv”文件
LOAD CSV  WITH HEADERS FROM 'file:///names_message.csv' AS data CREATE (:people{name:data.name, id:data.id});
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.顯示人物及關系
選擇全屏:
替換人物名稱:
替換人物關系:
4.4 篩選人物關系
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語句,大家可以多多嘗試。
總結
以上是生活随笔為你收集整理的Python + Neo4j(安装)可视化分析漫威十年人物关系图谱[通俗易懂](python详细安装教程)的全部內容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: 对Kalman Filter的理解
 - 下一篇: CNN的概念与原理