填坑填坑!
娱乐圈明星关系图谱体验地址,建议先体验后阅读本文,或者先打开链接,等阅读完没准页面也加载好了(太卡警告!或者去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 就成功啦!欢迎大家在自己感兴趣的数据集上动手实现酷炫的关系图谱。
以上,完结撒花:欢迎关注公众号“牛衣古柳”哈!
本文转载自: 掘金