填坑填坑!
娱乐圈明星关系图谱体验地址,建议先体验后阅读本文,或者先打开链接,等阅读完没准页面也加载好了(太卡警告!或者去B站看下录制的28s超短视频:超酷炫的娱乐圈明星关系图谱,初次录,戛然而止勿喷):
desertsx.github.io/yulequan-re…
在 InteractiveGraph 实现酷炫关系图谱之前瞻 一文里边扯皮边介绍了娱乐圈明星关系图谱的相关内容,并讲解了项目的关键步骤,但因为一直没有将代码上传到 GitHub
,未免有些夸夸其谈,毕竟 talk is cheap, show me the code
才是正事。
)在重新修改过各文件名称(因而会和前瞻一文有些出入,某些平台上可编辑的话会进行修改以确保和本文一致)、去掉无用冗余内容、加好注释说明后,代码已经开源在:DesertsX/YuLeQuan_Stars_Relation_Graph_By_InteractiveGraph。
文件目录结构如下所示,用的是可在线生成的工具:Dir Tree Noter,以下对各文件作用进行简单说明。
1 | 复制代码YuLeQuan_Stars_Relation_Graph_By_InteractiveGraph |
项目里其实包含三个小项目:stock
/ apachecn
/ ylq_star_relation_graph
,且分别保留了原始 csv
数据及转换成所需 JSON
数据的 python
代码;处理后的数据位于 webapp/static
下;对应的 html
文件位于 web/templates/
下;如果图谱里的节点用到了图像,一律在 webapp/static/images
下,而这里的 person
对应 apachecn
项目,star
对应 ylq_star_relation_graph
项目,其中后者由 ylq_star_images_spider.py
爬取获得所需的千余张明星图像;webapp/static/lib
里用到的是 InteractiveGraph
的资源,未做修改,直接使用即可。
项目用到了
Flask
,需自行安装;运行 app_run.py
启动内建的服务器,浏览器里打开http://127.0.0.1:5000
,再结合 graph_view.py
里定义过的路由,就能看到三个小项目的对应展示情况。
1 | 复制代码# graph_view.py |
三个小项目分别对应的链接:
1 | 复制代码http://127.0.0.1:5000/graph/relation?stock1=%E5%B9%B3%E5%AE%89%E9%93%B6%E8%A1%8C&stock2=%E6%8B%9B%E5%95%86%E9%93%B6%E8%A1%8C |
以上,如果你只想运行本项目,了解这么多即可。
如果你想构建自己的关系图谱,但对数据处理和转换没有头绪,接下来的内容或许能帮助到你。本次娱乐圈明星关系图谱的数据处理和转换在
Infos_and_Data2Json.ipynb
里有详细代码和必要的说明,本文仅简述下要点。
最终想构建出怎样的关系图谱,就需要预先准备好怎样的数据。
)例如当点击明星节点时,想呈现哪些详细介绍内容,就需要在爬取数据时解析和存储对应的数据,本次仅为练手,所以只用到了明星个人主页里很少的数据,以
刘烨
为例(刘烨个人主页),其 infos
就是 ['中国吉林', '75 KG', '1978-03-23']
。
明星关系图谱里涉及明星类和地区类两类节点,而查看爬取完的数据,发现地区数据比较杂乱,还需进行处理。
这里是古柳的一种处理方式,大家可自行DIY:海外的地区一律用对应的国家名;中国的地区有细分的则一律用对应的省份名,无细分的则统一用“中国”;剩下的用“不详”。其中,
area_list
和 area_map
是根据实际数据整理出来的,更详细代码见:DesertsX/YuLeQuan_Stars_Relation_Graph_By_InteractiveGraph。
1 | 复制代码area_list = ['美国', '以色列', '澳大利亚', '英国', '加拿大', '文莱', '新加坡', '西班牙', '越南', '罗马尼亚', '马来西亚', '菲律宾', '新西兰', |
接下来是将爬取的 CSV
数据转换成 InteractiveGraph
所需的 JSON
数据,可以参考Github/InteractiveGraph
项目里给出的红楼梦数据:dist/examples/honglou.json。古柳对该数据集曾简单介绍和分析过,可见:安利一个惊艳的红楼梦可视化作品和左手读红楼梦,右手写BUG,闲快活。详细代码一展开讲又会又臭又长,大家还是去 GitHub
看吧,有疑问可去“Python交友娱乐会所”(QQ群:613176398
),最终 JSON
数据最终格式大致如下,InteractiveGraph 0.1.1
版本还需加一段 JavaScript
代码,InteractiveGraph 0.2.0
应该是不需要了,本次用了前者,后者还未尝试过,有机会再看:
1 | 复制代码{ |
处理完数据,回过头添加对应 yulequan-relations-graph.html
文件;在graph_view.py
里定义路由,渲染 html
文件,运行 app_run.py
,打开 http://127.0.0.1:5000/yulequan-relations-graph
就成功啦!欢迎大家在自己感兴趣的数据集上动手实现酷炫的关系图谱。
以上,完结撒花:欢迎关注公众号“牛衣古柳”哈!
本文转载自: 掘金