網站是基於Graph技術開發的。數據庫
其實以前小F也利用了有關Graph的庫實現了一波人物的關係分析。json
只不過度析結果比較粗糙而已~app
下面是網站的概況,你們能夠一覽。學習
在這裏仍是要推薦下我本身建的Python開發學習羣:[304][050][799],羣裏都是學Python開發的,若是你正在學習Python ,小編歡迎你加入,你們都是軟件開發黨,不按期分享乾貨(只有Python軟件開發相關的),包括我本身整理的一份2018最新的Python進階資料和高級開發教程,歡迎進階中和進想深刻Python的小夥伴!網站
那麼人家能作出這麼酷炫的關係圖,咱們本身能不能實現呢?url
這一期就利用網站提供的數據,使用Neo4j(NOSQL圖形數據庫)進行實戰一波。教程
/ 01 / 獲取分析接口
人物及人物關聯信息從網站上獲取,具體接口以下。ip
數據爲json格式,分別在「characters」和「relationship」中。ci
這裏的信息是分別指託尼·斯達克,關係「0」爲朋友,斯蒂文·羅傑斯。
/ 02 / 數據獲取
具體代碼以下。
import json
import requests
headers = {
'user-agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 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] + '
')
for j in names:
num += 1
with open('names_message.csv', 'a+') as f:
f.write(j + ',' + str(num) + '
')
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 + '
')
最後成功獲取數據。
人物名爲簡稱,共計182我的物。
1144條人物關係數據,4大類型。
下面是182我的物的一些詳情信息。
包含了人物的名字及簡稱,存活狀態,人物屬性。
/ 03 / 數據可視化
下面經過Neo4j對人物關係進行可視化。
Neo4j的安裝這裏就不細說了,你們能夠自行百度。
開啓Neo4j服務後,登錄Neo4j網站,初始化界面以下。
先加載第一個文件。
具體代碼以下。
LOAD CSV WITH HEADERS FROM 'file:///names_message.csv' AS data CREATE (:people{name:data.name, id:data.id});
下面加載第二個文件。
具體代碼以下。
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按鈕處,取消限制數,再點擊全屏。
這裏大體能看出來漫威的人物彙集狀況。
第一大反派滅霸(thanos),原來這麼孤立的。
這裏因爲人物太多,形成觀察不便,因此對結果進行一些篩選。
好比篩選託尼·斯達克的朋友,運行下面的代碼。
match p=(n:people{name:"tonys"})-[:rel{relation:"friend"}]-> return p;
獲得下圖結果。
其中「thor」爲「雷神」,「stever」爲「美隊」,「blackw」爲「黑寡婦」,「vision」爲「幻視」,「peterp」爲「蜘蛛俠」,「bruceb」爲「綠巨人」。
下面再來看一下美隊的女朋友吧。
佩吉·卡特和她的侄女莎朗·卡特,聽說兩人樣貌極爲相像。
/ 04 / 總結
本次只是對Neo4j的一些簡單操做,後期或許會去深刻了解。
此外漫威的這些人物信息,還能夠玩出不少花樣的。
也但願你們能去動手嘗試嘗試,作一枚硬核鐵粉~
-The End-
將門是一家以專一於發掘、加速及投資技術驅動型創業公司的新型創投機構,旗下涵蓋將門創新服務、將門技術社羣以及將門創投基金。將門成立於2015年末,創始團隊由微軟創投在中國的創始團隊原班人馬構建而成,曾爲微軟優選和深度孵化了126家創新的技術型創業公司。
將門創新服務專一於使創新的技術落地於真正的應用場景,激活和實現全新的商業價值,服務於行業領先企業和技術創新型創業公司。
將門技術社羣專一於幫助技術創新型的創業公司提供來自產、學、研、創領域的核心技術專家的技術分享和學習內容,使創新成爲持續的核心競爭力。
將門創投基金專一於投資經過技術創新激活商業場景,實現商業價值的初創企業,關注技術領域包括機器智能、物聯網、天然人機交互、企業計算。在三年的時間裏,將門創投基金已經投資了包括量化派、碼隆科技、禾賽科技、寬拓科技、杉數科技、迪英加科技等數十傢俱備高成長潛力的技術型創業公司。