采集+图谱可视化|手把手教你采集明星人物关系并进行图谱展示

简介: 今天教大家获取采集(某度百科)的明星人物关系数据,并进行图谱可视化展示。

大家好,我是阿辰~

今天教大家获取采集(某度百科)的明星人物关系数据,并进行图谱可视化展示。

亮点(难点):

1.动态查询(输入任意明星名字就可以查询该明星关系人物)。

2.图谱展示(以及key-value形式)

具体介绍就不多讲了,先上效果:

可以在链接里面输入对应的明星名称就可以获取对应的人物关系图谱(还支持拖拽),比如:李易峰

  1. 采集数据

在百度里面搜索:李易峰

可以在明星这栏里面看到明星关系

下面开始定位网页标签

可以看到数据是在id为slider_relations下,对应的ul下的li标签

relations = selector.xpath('//*[@id="slider_relations"]/ul/li')
获取到li标签之后,需要解析key-value,key对应关系(搭档、好友等),value对应明星名字

for i in relations:

re = i.xpath('.//div[@class="name"]/text()')[0]
name = i.xpath('.//div[@class="name"]/em/text()')[0]

  1. 网页制作

为了将图谱结合以及可以动态查询任意明星人物关系,这里写成网站(网页)形式

通过Flask框架去编写后台,html作为前端,由于前端代码较多这里就不展示了(后面会提供源码)。

首先将采集明星人物关系的代码封装成函数。

获取信息

def getlist(name_i):

url_name = "https://baike.baidu.com/search/word?word="+str(name_i)
s = requests.Session()
response = s.get(url_name, headers=headers)
text = response.text
#此处是解析代码

links = []
for i in relations:
    re = i.xpath('.//div[@class="name"]/text()')[0]
    name = i.xpath('.//div[@class="name"]/em/text()')[0]
    print(re + "-" + name)
    dict = {'source': str(name_i), 'target': str(name), 'rela': str(re), 'type': 'resolved'}
    links.append(dict)
return links

其中的name_i就是搜索的明星名字,封装好的函数名称是getlist,函数返回的数据为links

接着是Flask的路由(浏览器里面的网站访问名getdata)

获取数据

@app.route('/getdata')
def getdata():

name_i = request.args.get('name')
# 采集数据
links = getlist(name_i)
print(links)
#return Response(json.dumps(links), mimetype='application/json')
return render_template('index.html', linkss=json.dumps(links))
  1. 启动

if name == "__main__":

"""初始化"""
app.run(host=''+ip, port=80,threaded=True)

这里的端口是80,ip是默认本机ip(你们运行代码访问时候,输入自己的本机ip即可)

运行py代码后,出现上述界面说明启动成功

接着在浏览器里面访问

http://127.0.0.1/getdata?name=明星名字
这里的明星名字是任意一位明星,比如:李易峰

http://127.0.0.1/getdata?name=李易峰

http://127.0.0.1/getdata?name=成龙

  1. 小结

本文获取了明星人物关系动态数据,并进行了可视化展示, 源代码在下方获取。

本文完整源码和数据获取方式,在阿辰的朋友圈有完整源码下载地址

需要的小伙伴可以去逛一下阿辰的朋友圈(还没有添加阿辰微信的小伙伴,下方可以扫码添加)

最后说一声:原创不易,求给个赞、在看、评论

推荐阅读

粉丝让我爬取热搜话题,结果做成了实时热搜『跑马灯』可视化

爬虫+可视化|爬取「奔跑吧」全系列嘉宾名单,并进行可视化分析

实战|用可视化方式看新闻,迅速了解最新时事热点

相关文章
|
JavaScript
Vue给Element UI的el-popconfirm绑定按钮事件
Vue给Element UI的el-popconfirm绑定按钮事件
|
JavaScript 数据安全/隐私保护
Vue封装全局注册弹窗组件,实现全局调用。
前言 很多网站都会有权限控制,比如一些博客网站的评论系统,必须要用户登录后才能发起评论,如果未登录想要评论,网站则会弹出登录弹窗。这个登录弹窗可以任何需要权限的地方弹出,所以这个弹窗组件我们就必须封装为共有的,共全局调用。
1894 0
|
10月前
|
数据安全/隐私保护 开发者
鸿蒙应用开发从入门到实战(十一):ArkUI组件Text&TextInput
ArkUI提供了丰富的系统组件,用于制作鸿蒙原生应用APP的UI,本文主要讲解文本组件Text和TextInput的使用。
558 3
|
存储 人工智能 大数据
对谈|喜马拉雅,为何能快速推进AI in All ?
对谈|喜马拉雅,为何能快速推进AI in All ?
866 1
|
存储 小程序 前端开发
微信小程序健康管理系统的开发与实现(一)
微信小程序健康管理系统的开发与实现
978 0
|
监控 数据可视化 应用服务中间件
Python进行数据可视化(Plotly、Dash)
【6月更文挑战第3天】本文介绍了Python中的数据可视化工具Plotly和Dash,它们用于创建交互式图表和Web应用。首先,通过`pip`安装Plotly和Dash库,然后通过案例展示了如何使用它们创建数据可视化应用。第一个案例是一个简单的销售数据可视化,用户可选择年份查看相应销售数据的条形图。第二个案例增加了交互性,允许用户通过下拉菜单选择产品查看销售趋势。接着,讨论了如何添加样式美化和交互性,使应用更吸引人且易于使用。最后,讲解了如何将Dash应用部署到生产环境,包括使用Gunicorn和Nginx,配置HTTPS,集成用户认证,以及日志记录和错误处理。文章强调了监控和性能优化对于生产
|
SQL 分布式计算 大数据
MaxCompute操作报错合集之遇到报错"ODPS-0130071:[1,8] Semantic analysis exception - class Ssf for user defined function ansy_xx cannot be loaded from any resources",该怎么办
MaxCompute是阿里云提供的大规模离线数据处理服务,用于大数据分析、挖掘和报表生成等场景。在使用MaxCompute进行数据处理时,可能会遇到各种操作报错。以下是一些常见的MaxCompute操作报错及其可能的原因与解决措施的合集。
1436 5
|
JavaScript Java 测试技术
基于SpringBoot+Vue+uniapp的校园外卖服务系统的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue+uniapp的校园外卖服务系统的详细设计和实现(源码+lw+部署文档+讲解等)
490 1
|
存储 安全 Linux
如何在 Linux 上加密文件?
如何在 Linux 上加密文件?
724 1
|
传感器 Java Linux
基于Android的运动记录APP设计与实现(论文+源码)_kaic
随着人们生活水平和生活质量的提高,人们越来越关注自己的身体健康。而跑步成为人们最受欢迎的运动方式,运动软件可以在人们锻炼身体的时候提供极大的帮助。本文针对运动轨迹和计步,设计一款基于Android 平台的运动软件。本系统通过使用百度鹰眼、重力传感器和数据库技术,实现了运动轨迹追踪、计步、查看运动记录等功能。本系统界面友好,操作简单,可以稳定运行。本款运动软件适合空闲时间不足的人群,方便人们随时锻炼身体,并查看自己的运动情况。