# coding:utf8
import time
import json
import pprint
##################################################
# 第一部分 读取数据
##################################################
#字典定义六类实体
films = {}
characters = {}
planets = {}
starships = {}
vehicles = {}
species = {}
#读取电影链接
fr = open('films.csv', 'r')
for line in fr:
tmp = json.loads(line.strip('\n')) #转换为字典
films[tmp['url']] = tmp
fr.close()
#读取人物数据
fr = open('film_characters.csv', 'r')
for line in fr:
tmp = json.loads(line.strip('\n'))
characters[tmp['url']] = tmp
fr.close()
#读取星球数据
fr = open('film_planets.csv', 'r')
for line in fr:
tmp = json.loads(line.strip('\n'))
planets[tmp['url']] = tmp
fr.close()
#读取飞船数据
fr = open('film_starships.csv', 'r')
for line in fr:
tmp = json.loads(line.strip('\n'))
starships[tmp['url']] = tmp
fr.close()
#读取装备数据
fr = open('film_vehicles.csv', 'r')
for line in fr:
tmp = json.loads(line.strip('\n'))
vehicles[tmp['url']] = tmp
fr.close()
#读取物种数据
fr = open('film_species.csv', 'r')
for line in fr:
tmp = json.loads(line.strip('\n'))
species[tmp['url']] = tmp
fr.close()
##################################################
# 第二部分 获取节点和边
##################################################
#定义节点和边
nodes = []
links = []
#nodes实体包括id(电影名称)、class、group、size
#links为电影与人物、星球、种族、装备、飞船的边
for key, value in films.items():
nodes.append({'id': value['title'], 'class': 'film', 'group': 0, 'size': 20})
#遍历value['characters'] 如果存在则建立一条电影到人物的边, 边的权重设置为3
#characters 人物
for item in value['characters']:
#python2的has_key在python3中删除
#if dict.has_key(word) => if word in dict
if item in characters:
links.append({'source': value['title'], 'target': characters[item]['name'], 'value': 3})
#planets 星球
for item in value['planets']:
if item in planets:
links.append({'source': value['title'], 'target': planets[item]['name'], 'value': 3})
#species 种族
for item in value['species']:
if item in species:
links.append({'source': value['title'], 'target': species[item]['name'], 'value': 3})
# starships
for item in value['starships']:
if item in starships:
links.append({'source': value['title'], 'target': starships[item]['name'], 'value': 3})
# vehicles
for item in value['vehicles']:
if item in vehicles:
links.append({'source': value['title'], 'target': vehicles[item]['name'], 'value': 3})
#建立人物的节点和关联
for key, value in characters.items():
nodes.append({'id': value['name'], 'class': 'character', 'group': 1, 'size': 5})
# films
for item in value['films']:
if item in films:
links.append({'source': value['name'], 'target': films[item]['title'], 'value': 3})
# planets
if value['homeworld'] in planets:
links.append({'source': value['name'], 'target': planets[value['homeworld']]['name'], 'value': 3})
# species
for item in value['species']:
if item in species:
links.append({'source': value['name'], 'target': species[item]['name'], 'value': 3})
# starships
for item in value['starships']:
if item in starships:
links.append({'source': value['name'], 'target': starships[item]['name'], 'value': 3})
# vehicles
for item in value['vehicles']:
if item in vehicles:
links.append({'source': value['name'], 'target': vehicles[item]['name'], 'value': 3})
for key, value in planets.items():
nodes.append({'id': value['name'], 'class': 'planet', 'group': 2, 'size': 16})
# films
for item in value['films']:
if item in films:
links.append({'source': value['name'], 'target': films[item]['title'], 'value': 3})
# characters
for item in value['residents']:
if item in characters:
links.append({'source': value['name'], 'target': characters[item]['name'], 'value': 3})
for key, value in starships.items():
nodes.append({'id': value['name'], 'class': 'starship', 'group': 3, 'size': 8})
# films
for item in value['films']:
if item in films:
links.append({'source': value['name'], 'target': films[item]['title'], 'value': 3})
# characters
for item in value['pilots']:
if item in characters:
links.append({'source': value['name'], 'target': characters[item]['name'], 'value': 3})
for key, value in vehicles.items():
nodes.append({'id': value['name'], 'class': 'vehicle', 'group': 4, 'size': 8})
# films
for item in value['films']:
if item in films:
links.append({'source': value['name'], 'target': films[item]['title'], 'value': 3})
# characters
for item in value['pilots']:
if item in characters:
links.append({'source': value['name'], 'target': characters[item]['name'], 'value': 3})
for key, value in species.items():
nodes.append({'id': value['name'], 'class': 'species', 'group': 5, 'size': 14})
# planets
if value['homeworld'] in planets:
links.append({'source': value['name'], 'target': planets[value['homeworld']]['name'], 'value': 3})
# films
for item in value['films']:
if item in films:
links.append({'source': value['name'], 'target': films[item]['title'], 'value': 3})
# characters
for item in value['people']:
if item in characters:
links.append({'source': value['name'], 'target': characters[item]['name'], 'value': 3})
fw = open('starwar_alldata.json', 'w')
fw.write(json.dumps({'nodes': nodes, 'links': links}))
fw.close()
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
前文介绍了Python3抓取电影实体知识,Seaborn可视化展示电影信息,D3可视化布局,关系图谱基本构建。本篇文章将实现点击节点显示其相关的属性及属性值,通常在知识图谱中称之为消息盒(InfoBox)展示。希望该资源对你有所帮助,更推荐读者结合博客进行学习。 https://blog.csdn.net/Eastmount/article/details/87193405 By: Eastmount
资源推荐
资源详情
资源评论
收起资源包目录
(best)完整代码.rar (57个子文件)
(best)完整代码
1.抓取数据集.png 375KB
2.Seaborn可视化.png 39KB
(2) 可视化 ShowPic_KG
show_height_mass.py 2KB
film_planets.csv 10KB
stat_basic.csv 1KB
film_species.csv 20KB
stat_character.csv 5KB
film_starships.csv 21KB
show_scatter.py 831B
get_jsonfils.py 756B
show_height_mass2.py 896B
get_jsondetails.py 732B
show_hist.py 582B
get_details.py 2KB
film_characters.csv 41KB
film_vehicles.csv 18KB
get_films.py 805B
films.csv 19KB
(5) D3+CSS绘制两种模式下鼠标拖动时间
main_kg4.html 14KB
starwar_alldata.json 89KB
(3-1) 获取json数据 neo4j_data
get_alldata_json-p3(success).py 6KB
film_planets.csv 10KB
film_species.csv 20KB
starwar_alldata.json 89KB
film_starships.csv 21KB
film_characters.csv 41KB
film_vehicles.csv 18KB
films.csv 19KB
(3-2) HTML+D3简单构建布局
starwar_alldata.json 89KB
main_kg.html 4KB
(6-1) D3绘制属性+属性值
film_planets.csv 10KB
film_species.csv 20KB
all_data.json 140KB
film_starships.csv 21KB
get_json_info.py 1KB
film_characters.csv 41KB
film_vehicles.csv 18KB
films.csv 19KB
6.D3绘制属性+属性值2.png 101KB
(6-2) D3绘制属性+属性值
main_kg6.html 15KB
starwar_alldata.json 89KB
all_data.json 140KB
5.D3+CSS鼠标响应事件2.png 170KB
4.D3+CSS绘制关系图谱.png 229KB
(4) D3+CSS绘制关系图谱
starwar_alldata.json 89KB
main_kg2.html 8KB
(1) 爬虫 Spider_KG
film_planets.csv 10KB
film_species.csv 20KB
film_starships.csv 21KB
get_details.py 2KB
film_characters.csv 41KB
film_vehicles.csv 18KB
get_films.py 805B
films.csv 19KB
6.D3绘制属性+属性值.png 165KB
3.HTML+D3简单构建布局.png 108KB
5.D3+CSS鼠标响应事件1.png 110KB
共 57 条
- 1
资源评论
Eastmount
- 粉丝: 25w+
- 资源: 80
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功