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

Posted 程序员启航

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了采集+图谱可视化|手把手教你采集明星人物关系并进行图谱展示相关的知识,希望对你有一定的参考价值。

大家好,我是启航~

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

亮点(难点):

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

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

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

可视化实战教学|教你用30行python代码查询明星关系

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

Image

 

1. 采集数据

在百度里面搜索:李易峰

Image

 

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

下面开始定位网页标签

Image

 

可以看到数据是在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]

 

Image

 

2. 网页制作

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

通过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))

 

3. 启动

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=李易峰

 

Image

 

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

 

Image

 

4. 小结

本文获取了七次全国人口普查数据,并进行了可视化展示,文中数据集和源代码在下方获取。

本文完整源码和数据获取方式,在我的同名公众号(程序员启航)后台回复  明星可视化  即可

在这里插入图片描述

 文章到这里就结束了,感谢你的观看

说实在的,每次在后台看到一些读者的回应都觉得很欣慰,我想把我收藏的一些编程干货贡献给大家,回馈每一个读者,希望能帮到你们。

干货主要有:

① 2000多本Python电子书(主流和经典的书籍应该都有了)

② Python标准库资料(最全中文版)

③ 项目源码(四五十个有趣且经典的练手项目及源码)

④ Python基础入门、爬虫、web开发、大数据分析方面的视频(适合小白学习)

⑤    Python所有知识点汇总(可以弄清楚Python的所有方向和技术)

*如果你用得到的话可以直接拿走,在我的QQ技术交流群里,可以自助拿走,群号是421592457。*
在这里插入图片描述

 

以上是关于采集+图谱可视化|手把手教你采集明星人物关系并进行图谱展示的主要内容,如果未能解决你的问题,请参考以下文章

基于知识图谱的《红楼梦》人物关系可视化及问答系统:人物数据采集

手把手教你快速入门知识图谱 - Neo4J教程

手把手教你用Python网络爬虫进行多线程采集高清游戏壁纸

手把手教你快速入门知识图谱 - Neo4J教程

手把手教你快速入门知识图谱 - Neo4J教程

手把手教你使用LabVIEW人工智能视觉工具包快速实现图像读取与采集